ES5为数组定义了5个迭代的方法
每个方法都接受两个参数:1.要在每一项上运行的函数 2.运行该函数的作用域对象--影响this的值(可选)。
运行的函数会接受三个参数:1.数组项的值 2.该项在数组中的位置 3.数组对象本身。
31. every()
对数组的每一项运行给定函数,如果该函数对每一项都返回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()
对数组的每一项运行给定函数,如果该函数对任一项返回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()
对数组的每一项运行给定函数,返回该函数会返回true的项组成的数组。
例:
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()
对数组的每一项运行给定函数,返回每次函数调用的结果组成的数组。
例:
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()
对数组的每一项运行给定函数。该方法没有返回值。
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() 是从数组的第一项开始,逐个遍历到最后。
.reduceRight() 是从数组的最后一项开始,逐个遍历到最前。
这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。
这两个方法都接收两个参数:1.要在每一项上运行的函数 2.作为归并基础的初始值(可选)
传给这两个方法的函数接收4个参数:1.前一个值 2.当前值 3.项的索引 4.数组对象
例:
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