-
-
- every()方法
- some()方法
- filter()方法
- forEach()方法
- map()方法
- 歸并方法
-
ECMAScript 5為數組定義了 5個疊代方法。每個方法都接收兩個參數:要在每一項上運作的函數和 (可選的)運作該函數的作用域對象——影響 this 的值。
傳入這些方法中的函數會接收三個參數:數組項的值item、該項在數組中的位置index和數組對象本身array。
根據使用的方法不同,這個函數執行後的傳回值可能 會也可能不會影響方法的傳回值。以下是這 5個疊代方法的作用。
every()方法
對數組中的每一項運作給定函數,如果該函數對每一項都傳回 true,則傳回 true。
var num = [, , , , , ];
var everyResult = num.every(function(item, index, array) {
return (item > 2);
});
alert(everyResult); //false
some()方法
some():對數組中的每一項運作給定函數,如果該函數對某一項傳回 true,則傳回 true
var num2 = [, , , , , , ];
var someResult = num2.some(function(item, index, array) {
return (item > 12);
});
alert(someResult); //true
filter()方法
filter():對數組中的每一項運作給定函數,傳回該函數會傳回 true 的項組成的數組。
var num3 = [, , , , , , ];
var filterResult = num3.filter(function(item, index, array) {
return ((item % 3) == 0);
});
document.write(filterResult); //3, 9, 18, 333
forEach()方法
forEach():對數組中的每一項運作給定函數。這個方法沒有傳回值。
var num4 = [, , , , , , ];
var sum = ;
num4.forEach(function(item, index, array){
sum += item;
});
document.write(sum); //376
map()方法
map():對數組中的每一項運作給定函數,傳回每次函數調用的結果組成的數組。
var num5 = [, , , , , ];
var mapResult = num5.map(function(item, index, array) {
return item * 2;
});
document.write(mapResult); //2, 4, 6, 8, 10, 12
歸并方法
ECMAScript 5 還新增了兩個歸并數組的方法:
reduce()
和
reduceRight()
。
這兩個方法都會疊 代數組的所有項,然後建構一個終傳回的值。而 reduceRight()則從數組的後一項開始,向前周遊到第一項。
這兩個方法都接收兩個參數:一個在每一項上調用的函數和(可選的)作為歸并基礎的初始值。傳給 reduce()和 reduceRight()的函數接收 4 個參數:前一個值、目前值、項的索引和數組對象。
這個函數傳回的任何值都會作為第一個參數自動傳給下一項。第一次疊代發生在數組的第二項上,是以第一個參數是數組的第一項,第二個參數就是數組的第二項。 使用 reduce()方法可以執行求數組中所有值之和的操作,比如:
var values = [,,,,];
var sum = values.reduce(function(prev, cur, index, array){
return prev + cur;
});
alert(sum); //15
第一次執行回調函數,prev 是 1,cur 是 2。第二次,prev 是 3(1加 2的結果),cur 是 3(數組 的第三項)。這個過程會持續到把數組中的每一項都通路一遍,後傳回結果。 reduceRight()的作用類似,隻不過方向相反而已。來看下面這個例子。
var values = [,,,,];
var sum = values.reduceRight(function(prev, cur, index, array){
return prev + cur;
});
alert(sum); //15
在這個例子中,第一次執行回調函數,prev 是 5,cur 是 4。當然,終結果相同,因為執行的都 是簡單相加的操作。 使用 reduce()還是 reduceRight(),主要取決于要從哪頭開始周遊數組。除此之外,它們完全 相同。 支援這兩個歸并函數的浏覽器有 IE9+、Firefox 3+、Safari 4+、Opera 10.5和 Chrome。