1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        JavaScript 處理數(shù)組函數(shù)的總結(jié)

        共 9906字,需瀏覽 20分鐘

         ·

        2021-04-24 05:57

        來(lái)源 | https://segmentfault.com/a/1190000005118701

        JavaScript的array可以包含任意數(shù)據(jù)類型,并通過(guò)索引來(lái)訪問(wèn)每個(gè)元素。

        1、檢測(cè)數(shù)組:instanceof、slice()、Array.isArray()

        檢測(cè)一個(gè)對(duì)象是不是數(shù)組的三種方法:
        (1)方法一:instanceOf檢測(cè)方法
        var arr = ['a','b','c'];if (arr instanceof Array){// do something...}

        或者:

        var arr = ['a','b','c'];if (Array.prototype.isPrototypeOf(arr)){// do something...}
        • 問(wèn)題:instanceof 操作符假設(shè)只有一個(gè)全局執(zhí)行環(huán)境。如果網(wǎng)頁(yè)中包含多個(gè)框架,那實(shí)際上存在兩個(gè)以上的不同全局執(zhí)行環(huán)境,從而存在兩個(gè)以上不同版本的Array構(gòu)造函數(shù)。如果從一個(gè)框架向另一個(gè)框架傳入數(shù)組,那么傳入的數(shù)組與第二框架中原生的數(shù)組分別具有各自不同的構(gòu)造函數(shù)。從而將傳入的數(shù)組誤判為非數(shù)組。

        • 注意:如果只有一個(gè)全局執(zhí)行環(huán)境,可以用 instanceof檢測(cè)數(shù)組,關(guān)于instanceof操作符的原理,請(qǐng)移步這里理解Javascript_07_理解instanceof實(shí)現(xiàn)原理.

        A instanceof B:檢查B.prototype 是否存在于A的原型鏈[[prototype]]中。

        (2)方法二:Array.isArray(obj)方法

        var arr = ['a','b','c'];if (Array.isArray(arr)){// do something...}

        這個(gè)方法克服了instanceof的問(wèn)題,可以確定某個(gè)變量是不是數(shù)組,而不管它是在哪個(gè)全局執(zhí)行環(huán)境中創(chuàng)建的。

        • 問(wèn)題:但是支持Array.isArray()方法的瀏覽器有IE9+、Firefox4+、Safari5+、Opera10.5+和Chrome

        (3)方法三:萬(wàn)能方法

        function isArray(arr){    return Object.prototype.toString.call(arr) == '[object Array]';}var arr = ['a','b','c'];isArray(arr);//true
        • 原理:在任何值上調(diào)用Object原型的toString() 方法,都會(huì)返回一個(gè)[object NativeConstructorName] 格式的字符串。每個(gè)類在內(nèi)部都有一個(gè)[[Class]](不可訪問(wèn)屬性的表示方式)屬性,這個(gè)屬性就指定了上述字符串中的構(gòu)造函數(shù)名NativeConstructorName。如:

        var arr = [];console.log(Object.prototype.toString.call(arr)); // "[object Array]"
        • 引申: 這種思路也可用于檢測(cè)某個(gè)值是不是原生函數(shù)或正則表達(dá)式。

        // ArrayObject.prototype.toString.call(value); // "[object Array]"
        // FunctionObject.prototype.toString.call(value); // "[object Function]"
        // RegExpObject.prototype.toString.call(value); // "[object RegExp]"
        // DateObject.prototype.toString.call(value); // "[object Date]"
        • 注意:Object的toString()方法不能檢測(cè)非原生的構(gòu)造函數(shù)的構(gòu)造函數(shù)名,因此,開(kāi)發(fā)人員定義的任何構(gòu)造函數(shù)都將返回[object Object]。

        2、獲取數(shù)組長(zhǎng)度:length

        直接訪問(wèn)length屬性獲取數(shù)組長(zhǎng)度:

        var arr = [1,'hihi',3.14,null,true];arr.length;//5

        注意:length還是可寫的,直接給Array的length賦一個(gè)新的值會(huì)導(dǎo)致Array大小的變化:

        var arr = [1,2,3];arr.length;//3arr;//1,2,3arr.length = 5;arr;//1,2,3,undefined,undefinedarr.length = 2;arr;//1,2

        通過(guò)設(shè)置Array的length屬性,可以從數(shù)組的末尾移除或者添加若干新項(xiàng)。
        利用length屬性還可以方便的向數(shù)組末尾添加新項(xiàng):arr[arr.length]="black",不過(guò),這種方法通常可以用'push'方法來(lái)替代。

        3、修改數(shù)組元素

        Array可以通過(guò)索引把對(duì)應(yīng)的元素修改為新的值,因此,對(duì)Array的索引進(jìn)行賦值會(huì)直接修改這個(gè)Array:

        var arr = [1,2,3];arr[2] = 5;arr;//1,2,5

        注意:如果通過(guò)索引賦值時(shí),索引超過(guò)了范圍,仍然會(huì)引起Array的大小變化:

        var arr = [1,2,3];arr[5] = 8;arr;//1,2,3,undefined,undefined,8

        建議:大多數(shù)其他編程語(yǔ)言不允許直接改變數(shù)組的大小,越界訪問(wèn)索引會(huì)報(bào)錯(cuò)。然而,JavaScript的Array卻不會(huì)有任何錯(cuò)誤。在編寫代碼時(shí),不建議直接修改Array的大小,訪問(wèn)索引時(shí)要確保索引不會(huì)越界。

        4、位置方法

        與String類似,Array也可以通過(guò)indexOf()來(lái)搜索一個(gè)指定的元素在Array中首次出現(xiàn)的位置:

        var arr = [10,20,'30',20,30];arr.indexOf(20);//1arr.indexOf(20,2)//3

        補(bǔ)充:

        stringObject.indexOf(searchvalue,fromindex)
        indexOf() 方法可返回某個(gè)指定的字符串值在字符串中首次出現(xiàn)的位置。

        searchvalue: 必需。規(guī)定需檢索的字符串值。
        fromindex: 可選的整數(shù)參數(shù)。規(guī)定在字符串中開(kāi)始檢索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略該參數(shù),則將從字符串的首字符開(kāi)始檢索。

        • indexOf() 方法對(duì)大小寫敏感!

        • 如果要檢索的字符串值沒(méi)有出現(xiàn),則該方法返回 -1。

        • 在判斷查找的項(xiàng)是否存在時(shí),使用的是全等===。

        • lastIndexOf和indexOf操作符類似,不過(guò)是從數(shù)組的末尾開(kāi)始向前查找的。

        5、操作方法:slice()、concat()、splice()

        • arr.slice()

        slice()就是對(duì)應(yīng)String的substring()版本,它截取Array的部分元素,然后返回一個(gè)新的Array:

        var arr = ['A','B','C','D','E','F','G'];arr.slice(1,3);//['B','C']arr.slice(3);//['D','E','F','G']arr.slice(3,50);//['D','E','F','G']arr.slice(-3);//['E','F','G']arr.slice(3,-2);//['D','E']

        注意

        • 到slice()的起止參數(shù)包括開(kāi)始索引,不包括結(jié)束索引。

        • 如果結(jié)束索引省略,將返回從開(kāi)始索引到數(shù)組結(jié)束的所有元素。

        • 如果結(jié)束索引超過(guò)了范圍,將返回從開(kāi)始索引到數(shù)組結(jié)束的所有元素。

        • 開(kāi)始索引可以去負(fù)值,它規(guī)定從從數(shù)組尾部開(kāi)始算起的位置。

        補(bǔ)充:

        arrayObject.slice(start,end)
        slice() 方法可從已有的數(shù)組中返回選定的元素。

        start: 必需。規(guī)定從何處開(kāi)始選取。如果是負(fù)數(shù),那么它規(guī)定從數(shù)組尾部開(kāi)始算起的位置。也就是說(shuō),-1 指最后一個(gè)元素,-2 指倒數(shù)第二個(gè)元素,以此類推。(這里的必需,有待商榷,實(shí)際上不寫也是可以的)
        end: 可選。規(guī)定從何處結(jié)束選取。該參數(shù)是數(shù)組片斷結(jié)束處的數(shù)組下標(biāo)。如果沒(méi)有指定該參數(shù),那么切分的數(shù)組包含從 start 到數(shù)組結(jié)束的所有元素。如果這個(gè)參數(shù)是負(fù)數(shù),那么它規(guī)定的是從數(shù)組尾部開(kāi)始算起的元素。

        • 請(qǐng)注意,該方法并不會(huì)修改數(shù)組,而是返回一個(gè)子數(shù)組。如果想刪除數(shù)組中的一段元素,應(yīng)該使用方法 Array.splice()。

        小技巧:復(fù)制數(shù)組
        如果不給slice()傳遞任何參數(shù),它就會(huì)從頭到尾截取所有元素。利用這一點(diǎn),我們可以很容易地復(fù)制一個(gè)Array:

        var arr = ['A','B','C','D','E','F','G'];var aCopy = arr.slice();aCopy;//['A','B','C','D','E','F','G']arr === aCopy; //false(如果,你不知道這里為什么是`false`,那么你應(yīng)該去看看原始值和引用對(duì)象)
        • arr.splice()

        splice()方法是修改Array的“萬(wàn)能方法”,它可以從指定的索引開(kāi)始刪除若干元素,然后再?gòu)脑撐恢锰砑尤舾稍兀?/span>

        var arr = ['Microsoft', 'Apple', 'Yahoo', 'AOL', 'Excite', 'Oracle'];// 從索引2開(kāi)始刪除3個(gè)元素,然后再添加兩個(gè)元素:arr.splice(2, 3, 'Google', 'Facebook'); // 返回刪除的元素 ['Yahoo', 'AOL', 'Excite']arr; // ['Microsoft', 'Apple', 'Google', 'Facebook', 'Oracle']// 只刪除,不添加:arr.splice(2, 2); // ['Google', 'Facebook']arr; // ['Microsoft', 'Apple', 'Oracle']// 只添加,不刪除:arr.splice(2, 0, 'Google', 'Facebook'); // 返回[],因?yàn)闆](méi)有刪除任何元素arr; // ['Microsoft', 'Apple', 'Google', 'Facebook', 'Oracle']

        補(bǔ)充:

        arrayObject.splice(index,howmany,item1,item2,...,itemx)
        splice() 方法向/從數(shù)組中添加/刪除項(xiàng)目,然后返回被刪除的項(xiàng)目。

        index: 必需。整數(shù),規(guī)定添加/刪除項(xiàng)目的位置,使用負(fù)數(shù)可從數(shù)組結(jié)尾處規(guī)定位置。
        howmany: 必需。要?jiǎng)h除的項(xiàng)目數(shù)量。如果設(shè)置為 0,則不會(huì)刪除項(xiàng)目。
        item1,item2,...,itemx: 可選。向數(shù)組添加的新項(xiàng)目。

        • 返回值:包含被刪除項(xiàng)目的新數(shù)組,如果有的話。

        注意:

        • splice() 方法可刪除從 index 處開(kāi)始的零個(gè)或多個(gè)元素,并且用參數(shù)列表中聲明的一個(gè)或多個(gè)值來(lái)替換那些被刪除的元素。

        • 如果從 arrayObject 中刪除了元素,則返回的是含有被刪除的元素的數(shù)組。

        • 請(qǐng)注意,splice() 方法與 slice() 方法的作用是不同的,splice() 方法會(huì)直接對(duì)數(shù)組進(jìn)行修改。

        • arr.concat()

        concat()方法把當(dāng)前的Array和另一個(gè)Array連接起來(lái),并返回一個(gè)新的Array:

        var arr = ['one','two','three'];var arrAdd = arr.concat([1,2,3]);arrAdd;//['one','two','three',1,2,3];arr;//['one','two','three']

        注意:請(qǐng)注意,concat()方法并沒(méi)有修改當(dāng)前Array,而是返回了一個(gè)新的Array。
        實(shí)際上,concat()方法可以接收任意個(gè)元素和Array,并且自動(dòng)把Array拆開(kāi),然后全部添加到新的Array里:

        var arr = ['one','two','three'];var arrAdd = arr.concat(1,2,['A','B']);arrAdd;//['one','two','three',1,2,'A','B']

        補(bǔ)充:

        arrayObject.concat(arrayX,arrayX,...,arrayX)
        concat() 方法用于連接兩個(gè)或多個(gè)數(shù)組。

        arrayX: 必需。該參數(shù)可以是具體的值,也可以是數(shù)組對(duì)象??梢允侨我舛鄠€(gè)。

        • 返回值:返回一個(gè)新的數(shù)組。該數(shù)組是通過(guò)把所有 arrayX 參數(shù)添加到 arrayObject 中生成的。如果要進(jìn)行 concat() 操作的參數(shù)是數(shù)組,那么添加的是數(shù)組中的元素,而不是數(shù)組。

        關(guān)于數(shù)組的操作方法

        • 如果要修改數(shù)組中的某些項(xiàng)的值,可以使用[]和splice.

        • 若果要在數(shù)組中插入某些項(xiàng),只能使用'splice'

        6、棧方法:push和pop

        var arr = [1, 2];arr.push('A', 'B'); // 返回Array新的長(zhǎng)度: 4arr; // [1, 2, 'A', 'B']arr.pop(); // pop()返回'B'arr; // [1, 2, 'A']arr.pop(); arr.pop(); arr.pop(); // 連續(xù)pop 3次arr; // []arr.pop(); // 空數(shù)組繼續(xù)pop不會(huì)報(bào)錯(cuò),而是返回undefinedarr; // []

        補(bǔ)充:

        (1)push: 方法可向數(shù)組的末尾添加一個(gè)或多個(gè)元素,并返回Array新的長(zhǎng)度。

        arrayObject.push(newElement1,newElement2,...,newElementX)

        newElement1: 必需。要添加到數(shù)組的第一個(gè)元素。
        newElement2: 可選。要添加到數(shù)組的第二個(gè)元素。
        newElementX: 可選。可添加多個(gè)元素。

        • 返回值:把指定的值添加到數(shù)組后的新長(zhǎng)度。

        • push() 方法可把它的參數(shù)順序添加到 arrayObject 的尾部。它直接修改 arrayObject,而不是創(chuàng)建一個(gè)新的數(shù)組。push() 方法和 pop() 方法使用數(shù)組提供的先進(jìn)后出棧的功能。

        (2)pop: 方法用于刪除并返回?cái)?shù)組的最后一個(gè)元素

        arrayObject.pop()

        • 返回值:arrayObject 的最后一個(gè)元素。

        • pop() 方法將刪除 arrayObject 的最后一個(gè)元素,把數(shù)組長(zhǎng)度減 1,并且返回它刪除的元素的值。如果數(shù)組已經(jīng)為空,則 pop() 不改變數(shù)組,并返回 undefined 值。

        7、隊(duì)列方法:unshift和shift

        unshift和shift的作用于push和pop類似,只不過(guò)前者操作的是Array的頭部.

        var arr = [1, 2];arr.unshift('A', 'B'); // 返回Array新的長(zhǎng)度: 4arr; // ['A', 'B', 1, 2]arr.shift(); // 'A'arr; // ['B', 1, 2]arr.shift(); arr.shift(); arr.shift(); // 連續(xù)shift 3次arr; // []arr.shift(); // 空數(shù)組繼續(xù)shift不會(huì)報(bào)錯(cuò),而是返回undefinedarr; // []

        注意:unshift() 方法無(wú)法在 Internet Explorer 中正確地工作!

        8、重排序方法:sort和reserve

        • arr.sort()

        sort()可以對(duì)當(dāng)前Array進(jìn)行排序,它會(huì)直接修改當(dāng)前Array的元素位置,直接調(diào)用時(shí),按照默認(rèn)順序(將按字母順序?qū)?shù)組中的元素進(jìn)行排序)排序:

        var arr = ['c','b','a','C','B','A'];arr.sort();arr;//['A','B','C','a','b','c'];

        補(bǔ)充:

        arrayObject.sort(sortby)
        sort() 方法用于對(duì)數(shù)組的元素進(jìn)行排序。

        sortby: 可選。規(guī)定排序順序。必須是函數(shù)。

        • 返回值:對(duì)數(shù)組的引用。請(qǐng)注意,數(shù)組在原數(shù)組上進(jìn)行排序,不生成副本。

        • 如果調(diào)用該方法時(shí)沒(méi)有使用參數(shù),將按字母順序?qū)?shù)組中的元素進(jìn)行排序,說(shuō)得更精確點(diǎn),是按照字符編碼的順序進(jìn)行排序。要實(shí)現(xiàn)這一點(diǎn),首先應(yīng)把數(shù)組的元素都轉(zhuǎn)換成字符串(如有必要),以便進(jìn)行比較。

        • 如果想按照其他標(biāo)準(zhǔn)進(jìn)行排序,就需要提供比較函數(shù),該函數(shù)要比較兩個(gè)值,然后返回一個(gè)用于說(shuō)明這兩個(gè)值的相對(duì)順序的數(shù)字。比較函數(shù)應(yīng)該具有兩個(gè)參數(shù) a 和 b,其返回值如下:

        1. 若 a 小于 b,在排序后的數(shù)組中 a 應(yīng)該出現(xiàn)在 b 之前,則返回一個(gè)小于 0 的值。

        2. 若 a 等于 b,則返回 0。

        3. 若 a 大于 b,則返回一個(gè)大于 0 的值。

        舉例說(shuō)明:
        實(shí)例1:按數(shù)字大小對(duì)數(shù)字排序

        function sortNumber(a,b){    return a-b}
        var arr=[3,5,1,10,21];arr.sort();arr;//[1,10,21,3,5];arr.sort(sortNumber);arr;//[1,3,5,10,21]

        實(shí)例2:默認(rèn)情況下,對(duì)字符串排序,是按照ASCII的大小比較的,現(xiàn)在,我們提出排序應(yīng)該忽略大小寫,按照字母序排序。

        var arr = ['Google','apple','Microsoft','BUPT'];arr.sort();arr;//['BUPT','Google','Microsoft','apple'];arr.sort(function(s1,s2){    var x1 = s1.toLowerCase();    var x2 = s2.toLowerCase();    if(x1<x2)        return -1;    if(x1>x2)        return 1;    return 0;});arr;//['apple','BUPT','Google','Microsoft']
        • arr.reverse()

        將整個(gè)Array的元素給掉個(gè)(gě)個(gè)(gè),也就是反轉(zhuǎn):

        var arr = ['one','two','three'];arr.reverse();arr;//['three','two','one'];

        注意:該方法會(huì)直接改變?cè)瓉?lái)的數(shù)組,而不會(huì)創(chuàng)建新的數(shù)組。

        9、轉(zhuǎn)換方法:join、toString、toLocaleString、valueOf

        • arr.toString()

        該方法會(huì)返回由數(shù)組中每個(gè)值的字符串形式拼接而成的一個(gè)以,分割的字符串.該方法首先會(huì)針對(duì)數(shù)組中的每一項(xiàng)調(diào)用其相應(yīng)的toString()方法得到字符串,然后再用,拼接這些字符串。

        • arr.valueOf()

        該方法會(huì)返回?cái)?shù)組本身。

        • arr.toLocalString()

        該方法也會(huì)創(chuàng)建一個(gè)數(shù)組值的以,分隔的字符串,但是與前面兩個(gè)方法不同的是,這一次為了取得數(shù)組中每一項(xiàng)的值,調(diào)用的是每一項(xiàng)的toLocaleString()方法。

        • arr.join()

        join()方法是一個(gè)非常實(shí)用的方法,它把當(dāng)前Array的每個(gè)元素都用指定的字符串連接起來(lái),然后返回連接后的字符串:

        var arr = ['a','b','c',1,2,3];var arrToString = arr.join('-');arrToString;//a-b-c-1-2-3

        注意:如果Array的元素不是字符串,將自動(dòng)轉(zhuǎn)換為字符串后再連接。

        補(bǔ)充:

        arrayObject.join(separator)
        join()方法用于把數(shù)組中的所有元素放入一個(gè)字符串。元素是通過(guò)指定的分隔符進(jìn)行分隔的。

        separator: 可選。指定要使用的分隔符。如果省略該參數(shù),則使用逗號(hào)作為分隔符。

        • 返回值:返回一個(gè)字符串。該字符串是通過(guò)把 arrayObject 的每個(gè)元素轉(zhuǎn)換為字符串,然后把這些字符串連接起來(lái),在兩個(gè)元素之間插入 separator 字符串而生成的。

        關(guān)于轉(zhuǎn)換方法,需要注意:

        如果數(shù)組中某一項(xiàng)的值為null、undefined,那么該值在這些方法的返回結(jié)果中以空白字符串表示。

        10、迭代方法:every、filter、forEach、map、some

        這些方法都接收兩個(gè)參數(shù):要在每一項(xiàng)上運(yùn)行的函數(shù)和(可選的)運(yùn)行該函數(shù)的作用域?qū)ο蟆绊憈his的值。傳入這些方法的函數(shù)會(huì)接收三個(gè)參數(shù):數(shù)據(jù)項(xiàng)的值、該項(xiàng)在數(shù)組中的位置和數(shù)組對(duì)象本身。

        • every()對(duì)數(shù)值中的每一項(xiàng)運(yùn)行給定的函數(shù),如果數(shù)組對(duì)每一項(xiàng)返回true,則返回true.

        • some()對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定的函數(shù),如果該函數(shù)對(duì)任一項(xiàng)返回true,則返回true

        這兩個(gè)方法會(huì)忽略數(shù)組中undefined項(xiàng)

        • filter()對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定的函數(shù),返回該函數(shù)會(huì)返回true的項(xiàng)組成的數(shù)組。

        注意,該方法與jQuery中$().filter()方法的區(qū)別

        • filter(expr|obj|ele|fn):篩選出與指定表達(dá)式匹配的元素集合。這個(gè)方法用于縮小匹配的范圍。用逗號(hào)分隔多個(gè)表達(dá)式。

        expr:字符串值,包含供匹配當(dāng)前元素集合的選擇器表達(dá)式。
        obj:現(xiàn)有的jQuery對(duì)象,以匹配當(dāng)前的元素。
        ele:一個(gè)用于匹配元素的DOM元素。
        fn:一個(gè)函數(shù)用來(lái)作為測(cè)試元素的集合。它接受一個(gè)參數(shù)index,這是元素在jQuery集合的索引。在函數(shù), this指的是當(dāng)前的DOM元素。

        • forEach()對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定的函數(shù),該方法沒(méi)有返回值。

        注意,該方法不會(huì)遍歷只聲明而為定義的值

        注意,該方法與jQuery中$.each()和each()方法的區(qū)別。

        • $.each(object,callback): 不同于例遍 jQuery 對(duì)象的 $().each() 方法,此方法可用于例遍任何對(duì)象。如果需要退出 each 循環(huán)可使回調(diào)函數(shù)返回 false,其它返回值將被忽略。

        object:需要例遍的對(duì)象或數(shù)組。
        callback:每個(gè)成員/元素執(zhí)行的回調(diào)函數(shù)?;卣{(diào)函數(shù)擁有兩個(gè)參數(shù):第一個(gè)為對(duì)象的成員或數(shù)組的索引index,第二個(gè)為對(duì)應(yīng)變量或內(nèi)容value。

        • $().each(callback): 以每一個(gè)匹配的元素作為上下文來(lái)執(zhí)行一個(gè)函數(shù)。意味著,每次執(zhí)行傳遞進(jìn)來(lái)的函數(shù)時(shí),函數(shù)中的this關(guān)鍵字都指向一個(gè)不同的DOM元素(每次都是一個(gè)不同的匹配元素)。而且,在每次執(zhí)行函數(shù)時(shí),都會(huì)給函數(shù)傳遞一個(gè)表示作為執(zhí)行環(huán)境的元素在匹配的元素集合中所處位置的數(shù)字值作為參數(shù)(從零開(kāi)始的整型)。返回 false 將停止循環(huán) (就像在普通的循環(huán)中使用 break)。返回 true 跳至下一個(gè)循環(huán)(就像在普通的循環(huán)中使用continue)。

        calback:對(duì)于每個(gè)匹配的元素所要執(zhí)行的函數(shù)?;卣{(diào)函數(shù)只有一個(gè)參數(shù),即index。

        11、歸并方法:reduce、reduceRight

        • 這兩個(gè)方法都會(huì)迭代數(shù)組中的所有項(xiàng),然后構(gòu)建一個(gè)最終返回的值。reduce()從數(shù)組的第一項(xiàng)開(kāi)始,逐個(gè)遍歷到最后,而reduceRight()從最后一項(xiàng)開(kāi)始。

        • 這兩個(gè)方法都接收兩個(gè)參數(shù):一個(gè)在每一項(xiàng)上調(diào)用的函數(shù),和(可選的)最為歸并基礎(chǔ)的初始值。

        • 傳給這兩個(gè)方法的函數(shù)接收4個(gè)參數(shù):前一個(gè)值,當(dāng)前值,當(dāng)前值的索引和數(shù)組對(duì)象。這個(gè)函數(shù)返回的任何值都會(huì)作為第一個(gè)參數(shù)自動(dòng)傳給下一項(xiàng),因此,第一次迭代發(fā)生在數(shù)組的第二項(xiàng)上。

        參考

        1、數(shù)組-廖雪峰的官方網(wǎng)站
        2、js中substr,substring,indexOf,lastIndexOf的用法小結(jié)
        3、 JavaScript 檢測(cè)數(shù)組
        4、[javascript 高級(jí)教程]()

        學(xué)習(xí)更多技能

        請(qǐng)點(diǎn)擊下方公眾號(hào)


        瀏覽 75
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产精品久久久久久久久久久久久久久久 | 囯产精品久久久久久 | 黑人gaygay巨大粗长肥 | 国产成人三级视频 | 国内久久婷婷 | 午夜日韩一区二区三区在线观看 | 中文字幕av久久爽一区 | 操逼免费 | 久久国产色综合久久88女性内衣 | 欧美成人网站在线导航 |