美文网首页
es7 reduce()新增属性详解

es7 reduce()新增属性详解

作者: 郝艳峰Vip | 来源:发表于2021-08-06 16:34 被阅读0次

前言

reduce 为函数中的每一个元素依次执行回调函数,不包括数组中被删除或者从我被赋值的元素,接受四个参数arr.reduce(function(prev,current,index,arr){})

数组求和

    var arr = [1,2,3,4,5];
        var sum = arr.reduce((x,y)=>x+y)
        console.log(sum);    //15
        var ride = arr.reduce((x,y)=>x*y)
        console.log(ride);     //120

二维数组转一维数组

        var arr = [[1,2],[3,4,5]];
        var single = arr.reduce((acc,cur)=>{
              return acc.concat(cur)
        },[])
        console.log(single);

多维数组转一维数组

        var arr = [[1,2],[3,4,5],[6,7,[8,9]]];
        var single = function(arr){
            return arr.reduce((pre,cur)=>pre.concat(Array.isArray(cur)?single(cur):cur),[])
        }
        console.log(single(arr));

多维对象数组转化为一维对象数组

     var  arrayObject =  [
        {
          name: '张三',
          children: [
            {
              name: '张三儿子',
              children: [{}],
            },
          ],
        },
        {
          name: '李四',
          children: [
            {
              name: '李四儿子',
              children: [{}],
            },
          ],
        },
      ];

     function newArr(arrayObject ){
       return arrayObject .reduce((result,item)=>{
         return result.concat(item,(Array.isArray(item.children) ? newArr(item.children) : []))
       },[])
    }
 let changedData = newArr(arrayObject )
console.log(changedData)

计算数组中每个元素出现的次数

    var arr = [1,2,2,2,2,2,2,2,3,4,4,4,4,4,5,5];
    var countNumbs = arr.reduce((acc,cur)=>{
         if (cur in acc) {
             acc[cur] ++;
         }else{
            acc[cur] = 1;
         }
         return acc;
    },{})
    console.log(countNumbs);

相关文章

网友评论

      本文标题:es7 reduce()新增属性详解

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