ECMAScript 5 爲數組定義了 5 個迭代方法。每個方法都接收兩個參數:要在每一項上運行的函數和(可選的)運行該函數的作用域對象——影響 this 的值。
傳入這些方法中的函數會接收三個參數:數組項的值、該項在數組中的位置和數組對象本身。
以下是這 5 個迭代方法的作用:
every():對數組中的每一項運行給定函數,如果該函數對每一項都返回 true,則返回 true。
filter():對數組中的每一項運行給定函數,返回該函數會返回 true 的項組成的數組。
forEach():對數組中的每一項運行給定函數。這個方法沒有返回值。
map():對數組中的每一項運行給定函數,返回每次函數調用的結果組成的數組。
some():對數組中的每一項運行給定函數,如果該函數對任一項返回 true,則返回 true。
舉例:
var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.every(function(item, index, array){
return (item > 2);
});
alert(everyResult); //false 只有部分滿足
var someResult = numbers.some(function(item, index, array){
return (item > 2);
});
alert(someResult); //true 至少一項滿足
var numbers = [1,2,3,4,5,4,3,2,1];
var filterResult = numbers.filter(function(item, index, array){
return (item > 2);
});
alert(filterResult); //[3,4,5,4,3] 返回都大於2的項組成的集合
var numbers = [1,2,3,4,5,4,3,2,1];
var mapResult = numbers.map(function(item, index, array){
return item * 2;
});
alert(mapResult); //[2,4,6,8,10,8,6,4,2] 返回都乘以2後組成的集合
var numbers = [1,2,3,4,5,4,3,2,1];
numbers.forEach(function(item, index, array){
//每一項均執行這裏的操作
});