ES5為數(shù)組定義了5個迭代的方法
每個方法都接受兩個參數(shù):1.要在每一項上運行的函數(shù) 2.運行該函數(shù)的作用域?qū)ο?-影響this的值(可選)。
運行的函數(shù)會接受三個參數(shù):1.數(shù)組項的值 2.該項在數(shù)組中的位置 3.數(shù)組對象本身挤庇。
31. every()
對數(shù)組的每一項運行給定函數(shù)抡锈,如果該函數(shù)對每一項都返回true,則返回true
例子:
var arr = [1,2,3,4,5,4,3,2,1];
var num = arr.every(function(item,index,array){
return (item > 2);
})
console.log(num); //false
2 .some()
對數(shù)組的每一項運行給定函數(shù)器紧,如果該函數(shù)對任一項返回true,則返回true。
例:
var arr = [1,2,3,4,5,6,7,8];
var num = arr.some(function(item,index,array){
return (item > 2);
})
console.log(num); //true
3.filter()
對數(shù)組的每一項運行給定函數(shù)敦跌,返回該函數(shù)會返回true的項組成的數(shù)組。
例:
var arr= [1,2,3,4,5,4,3,6,1];
var num= arr.filter(function(item,index,array){
return (item > 3);
})
console.log(filterResult); //[4,5,4,6]
4·map()
對數(shù)組的每一項運行給定函數(shù)逛揩,返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組柠傍。
例:
var arr = [1,2,3,4,5,6,7,8];
var num = arr.map(function(item,index,array){
return item*2;
})
console.log(num); //[2,4,6,8,10,12,14,16]
5·forEach()
對數(shù)組的每一項運行給定函數(shù)。該方法沒有返回值辩稽。
var arr = [1,2,3,4,5,6,7,8];
var num = arr.forEach(function(item,index,array){
console.log(item*2); //[2,4,6,8,10,12,14,16]
})
console.log(num); //undefined
歸并方法
·reduce() 是從數(shù)組的第一項開始惧笛,逐個遍歷到最后。
.reduceRight() 是從數(shù)組的最后一項開始逞泄,逐個遍歷到最前患整。
這兩個方法都會迭代數(shù)組的所有項,然后構(gòu)建一個最終返回的值喷众。
這兩個方法都接收兩個參數(shù):1.要在每一項上運行的函數(shù) 2.作為歸并基礎(chǔ)的初始值(可選)
傳給這兩個方法的函數(shù)接收4個參數(shù):1.前一個值 2.當(dāng)前值 3.項的索引 4.數(shù)組對象
例:
var values = [3,6,5,2,4,2];
var sum = values.reduce(function(prev,cur,index,array){
return prev + cur; //3+6=9+5=14+2=16+4=20+2=22
});
console.log(sum); //22