接著昨天的學習,我發現了陣列的一些簡便好玩的方法。
歸併方法:
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 對陣列中每一...