JavaScript数组reduce方法

JavaScript数组reduce方法

  1. reduce()
    reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 的数组。

    arr.reduce(callback,[initialValue])
    

    callback参数:

    参数描述
    preValue上次回调函数返回值,或者是提供的初始值(initialValue)
    curValue数组中当前被处理的元素
    ndex当前调用数组元素数组下标
    rray当前数组

    initialValue参数:

    参数描述
    initialValue首次调用 callback 的参数
  2. reduce使用实例

    a.去重:(当然你说用[...new Set(arr)]我也不和你犟)

    let array = [1,2,3,4,4,1]
    let proArr = array.reduce((pre,cur)=>{
        if(!pre.includes(cur)){
          return pre.concat(cur);
        }else{
          return pre;
        }
    },[]);
    console.log(proArr);
    // [1, 2, 3, 4]
    

    b.计数:

    let fruits = ['apple', 'orange', 'apple', 'banana', 'watermelon'];
    
    let fruitNum = fruits.reduce((pre,cur)=>{
      if(cur in pre){
        pre[cur]++;
      }else{
        pre[cur] = 1; 
      }
      return pre;
    },{});
    console.log(fruitNum); 
    //{apple: 2, orange: 1, banana: 1, watermelon: 1}
    

    c.多维数组转一维

    let array = [[0, 1], [2, 3], [4,[5,6,7,[8,9,[10]]]]]
    
    let proArr = function(arr){
       return array.reduce((pre,cur)=>pre.concat(Array.isArray(cur)?newArr(cur):cur),[])
    }
    console.log(proArr(arr));
    //[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    

3.最后

reduceRight,该方法用法与reduce其实是相同的,只是遍历的顺序相反,它是从数组的最后一项开始,向前遍历到第一项。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值