es7 reduce()新增屬性詳解

前言

reduce 為函數(shù)中的每一個元素依次執(zhí)行回調(diào)函數(shù),不包括數(shù)組中被刪除或者從我被賦值的元素,接受四個參數(shù)arr.reduce(function(prev,current,index,arr){})

數(shù)組求和

    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

二維數(shù)組轉一維數(shù)組

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

多維數(shù)組轉一維數(shù)組

        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));

多維對象數(shù)組轉化為一維對象數(shù)組

     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)

計算數(shù)組中每個元素出現(xiàn)的次數(shù)

    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);
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容