陣列的歸併 迭代方法

2022-03-05 01:43:13 字數 1682 閱讀 2993

接著昨天的學習,我發現了陣列的一些簡便好玩的方法。

歸併方法:

ecmascript 5 新增了兩個歸併陣列的方法:reduce()reduceright()。這兩個方法都會迭

代數組的所有項,然後構建乙個最終返回的值。其中, reduce() 方法從陣列的第一項開始,逐個遍歷

到最後。而 reduceright() 則從陣列的最後一項開始,向前遍歷到第一項。

這兩個方法都接收兩個引數:乙個在每一項上呼叫的函式和(可選的)作為歸併基礎的初始值。

傳給 reduce() 和 reduceright() 的函式接收4個引數:前乙個值、當前值、項的索引和陣列物件。這

個函式返回的任何值都會作為第乙個引數自動傳給下一項。第一次迭代發生在陣列的第二項上,因此第

乙個引數是陣列的第一項,第二個引數就是陣列的第二項。

使用 reduce() 方法求陣列中所有值之和:

var values = [1,2,3,4,5];

var sum = values.reduce(function

(prev, cur, index, array));

alert(sum);

//15

第一次執行**函式, prev 是 1, cur 是 2。第二次, prev 是 3(1 加 2 的結果) , cur 是 3(陣列

的第三項) 。這個過程會持續到把陣列中的每一項都訪問一遍,最後返回結果。

reduceright() 的作用類似,只不過方向相反而已。

迭代方法:以下方法都不會修改陣列中的包含的值

 every() :對陣列中的每一項執行給定函式,如果該函式對每一項都返回 true ,則返回 true 。

 filter() :對陣列中的每一項執行給定函式,返回該函式會返回 true 的項組成的陣列。

 foreach() :對陣列中的每一項執行給定函式。這個方法沒有返回值。

 map() :對陣列中的每一項執行給定函式,返回每次函式呼叫的結果組成的陣列。

 some() :對陣列中的每一項執行給定函式,如果該函式對任一項返回 true ,則返回 true 。

ecmascript 5 為陣列定義了 5 個迭代方法。每個方法都接收兩個引數:要在每一項上執行的函式和

(可選的)執行該函式的作用域物件——影響 this 的值。傳入這些方法中的函式會接收三個引數:數

組項的值、該項在陣列中的位置和陣列物件本身。

栗子:

var numbers = [1,2,3,4,5,4,3,2,1];

var filterresult = numbers.filter(function

(item, index, array));

alert(filterresult);

//[3,4,5,4,3]

var numbers = [1,2,3,4,5,4,3,2,1];

var mapresult = numbers.map(function

(item, index, array));

alert(mapresult);

//[2,4,6,8,10,8,6,4,2]

陣列 歸併方法

ecmascript5新增了兩個歸併的陣列的方法。這兩個方法 都會迭代陣列的所有項,然後構建乙個最終返回的值。這兩個方法都接收兩個引數 乙個在每一項上呼叫的函式和 可選的 作為並歸的初始值。傳給reduce reduceright 的函式接收4個引數 前乙個值,當前值,項的索引和陣列的物件。redu...

陣列的迭代方法

es5中為陣列定義了5個迭代方法 1 event 對陣列中的每一項執行乙個給定函式,如果函式中每一項都返回true則返回true 2 some 對陣列中每一項執行乙個給定的函式,如果函式中任意一項返回true則返回true 3 filter 對陣列每一項執行乙個給定的函式,返回該函式會返回true的...

陣列迭代方法

1 every 對陣列中每一項執行給定函式,如果該函式對每一項都返回true,則返回true 2 some 對陣列中每一項執行給定函式,如果該函式對某一項返回true,則返回true 3 filter 對陣列中每一項執行給定函式,返回該函式返回為true的項組成陣列 4 foreach 對陣列中每一...