都可以遍历数组, 其作用略有不同, 接下来咱们具体看下
forEach
对原数组中每个元素执行相同操作,返回值为undefined, 不可以链式调用,举个栗子:
arr.forEach(function(val,key,arrTmp){
arrTmp[key] = 新值;
或
其它操作
})
map
取出原数组中每个元素,执行相同操作后,放入一个新数组中返回,举个栗子:
let newArr = arr.map(function(val,key,arrTmp){
return arrTmp[key] = val + 新值;
或
其它操作
})
// console.log(newArr) // 为新数组
some
取出原数组中每个元素, 然后检测数组中的元素是否满足指定条件(函数提供)
如果有一个元素满足条件,则表达式返回 true , 剩余的元素不会再执行检测。
如果没有满足条件的元素,则返回false, 举个例子:
let arr = [1,2,3,4,5,6,7,8];
let isTure = arr.some(function(val,key,arrTmp){
return val > 3;
或
其它操作
})
// console.log(isTure ) // true 且只遍历四次
filter
创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素.举个栗子:
let arr = [1,2,3,4,5,6,7,8];
let newArr = arr.filter(function(val,key,arrTmp){
return val > 3;
或
其它操作
})
// console.log(newArr) // [4,5,6,7,8]
reduce
将数组中每个元素的值,汇总成一个最终结果, 举个栗子:
let arr = [1,2,3,4];
var result = arr.reduce(function(prev,val,i,arr){
return prev+val; //累加
},base); // base 累加基数
console.log(result ) // 10
也可以用作统计出现次数
var subArr = attr.reduce(function(prev,cur,index,arr){
console.log(prev,cur)
if(cur in prev){
prev[cur]++;
}else{
prev[cur] = 1;
}
eturn prev;
},{})
网友评论