美文网首页
聊聊forEach、map、some、filter 和 redu

聊聊forEach、map、some、filter 和 redu

作者: 酷酷的凯先生 | 来源:发表于2020-08-05 18:52 被阅读0次

都可以遍历数组, 其作用略有不同, 接下来咱们具体看下

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;
},{})

相关文章

网友评论

      本文标题:聊聊forEach、map、some、filter 和 redu

      本文链接:https://www.haomeiwen.com/subject/jmrorktx.html