reduce 函数使用笔记

  // arr.reduce(function(prev,cur,index,arr){}, init);

  // arr 表示原数组;
  // prev 表示上一次调用回调时的返回值,或者初始值 init;
  // cur 表示当前正在处理的数组元素;
  // index 表示当前正在处理的数组元素的索引,若提供 init 值,则索引为0,否则索引为1;
  // init 表示初始值。

  // reduce(callback,initiaValue)会传入两个变量,回调函数(callback)和初始值(initiaValue)
  // 1 数组求和
  var num = [];
  var res = num.reduce((total,num)=>{
    return total+num;
  });
  console.log(res)// 不加initiaValue初始值的时候  计算会报错

  var num = [8,10,100,23,10];
  var res = num.reduce((total,num)=>{
    return total+num;
  },0);
  console.log(res)// 151
  //兼容性一般加上initialValue


  // 合并二维数组   a.concat 连接两个数组 不会更改现有数组,而是返回一个新数组
  var doubleArr = [[0, 1], [2, 3], [4, 5]]
  let arr = doubleArr.reduce((a, b)=> {
    return a.concat(b);
  }, []);
  console.log(arr)
  // console.log [0, 1, 2, 3, 4, 5]
  //初始值initialValue []


  // 统计一个数组中有多少个重复对象
  // 正常
  var arr3 = ["name","age","name","age","pear","sex",'账单'];
  function getWordCnt(){
    var obj = {};
    for(var i= 0, l = arr3.length; i< l; i++){
      var item = arr3[i];
      console.log(obj,obj[item] + 1)
      obj[item] = (obj[item] + 1 ) || 1;
    }
    return obj;
  }
  console.log(getWordCnt());
  // (obj[item] + 1 ) || 1;  初始 (obj[item] + 1 ) = NAN 
  // {name: 2, age: 2, pear: 1, sex: 1}

  // 用reduce时:
  var arr4 = ["name","age","name","age","pear","sex"];
  function getWordCnt1(){
    return arr4.reduce((prev,next)=>{
      prev[next] = (prev[next] + 1) || 1;
      return prev;
    },{});
  }
  console.log(getWordCnt1());
  // {name: 2, age: 2, pear: 1, sex: 1}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值