迭代方法
ECMAScript 5 为数组定义了 5 个迭代方法,每个方法都接受2个参数:要在数组每一项运行的函数和运行该函数的作用域对象——影响 this 的值(可选);传入这些方法的函数接受3个值:数组项的值(item),该值的索引(index)以及该数组对象本身(array);
1、every()
对数组的每一项运行给定的函数,如果该函数对每一项都返回true,则返回true;
var arr=[-1,0,1,2,3];
//判断数组是不是全部都是正数
var result=arr.every(function(item,index,array){
return item>0;
})
result;//false
2、filter() 过滤
返回运行给定函数为true的新数组;
var arr=[-1,0,1,2,3];
//返回正数
var arr1=arr.filter(function(item,index,array){
return item>0;
})
arr1;
3、forEach()
循环每一项执行指定操作,和for...in..、for(var i=0;i<arr.length;i++){}一样;
var arr=[-1,0,1,2,3];
arr.forEach(function(item,index,array){
console.log(item);
})
4、map()
对数组中的每一项运行给定函数,返回每次函数调用的结果组成的新数组。
var arr=[-1,0,1,2,3];
var result= arr.map(function(item,index,array){
return item*10;
})
result; //[-10,0,10,20,30]
5、some()
和every()类似,不同的是,只要数组项有一个返回true,则结果为true;
var arr=[-1,0,1,2,3];
//判断数组是否存在正数
var result=arr.some(function(item,index,array){
return item>0;
})
result;//true
归并方法
ECMAScript 5 为数组定义了 2 个归并方法,reduce()和 reduceRight()。它的函数接受4个值,前一个项(prev),当前项(cur),当前项的索引(index),数组对象本身(array);而reduceRight()则从数组的最后一项开始,向前遍历到第一项。
reduce、reduceRight()
var arr=[1,2,3,4,5];
var result=arr.reduce(function(prev,cur,index,array){
return prev+cur;
})
result; //15
var result1=arr.reduceRight(function(prev,cur,index,array){
return prev+cur;
})
result;//15;
上述方法的的函数,在支持ES6的环境里,我更喜欢采用箭头函数=>,如:
var arr=[1,2,3,4,5];
arr.forEach((item,index,array)=>{
console.log(item);
})
//当然实际应用中,有可能只需要数组的值;则简写为:
arr.forEach(item=>{
console.log(item);
})