国产69囗曝吞精在线视频,肥臀浪妇太爽了快点再快点,亚洲欧洲成人a∨在线观看,狠狠色丁香久久综合 ,国精一二二产品无人区免费应用,亚洲精品久久久久中文字幕,四虎一区二区成人免费影院网址 ,无码三级中文字幕在线观看

      js reduce()

      2019-11-1    seo達(dá)人

      是什么

      ES5提供的數(shù)組的方法。

      reduce() 方法接收一個函數(shù)作為回調(diào)函數(shù)(accumulator),數(shù)組中的每個值(從左到右)開始縮減(其實就是從左往右開始對每個數(shù)執(zhí)行回調(diào)函數(shù)),最終為一個值。



      PS: 回調(diào)函數(shù)的返回結(jié)果類型和傳入的初始值相同



      語法以及參數(shù)

      arr.reduce(  callback(accumulator, currentValue,index ,array ) ,initialValue )

      1

      initialValue 可選

      如果有的話則作為,第一次調(diào)用 callback函數(shù)時的第一個參數(shù)的值。

      如果沒有提供初始值,callback則使用數(shù)組的第一個元素,作為第一次調(diào)用的初始值。

      在沒有初始值的空數(shù)組上調(diào)用 reduce 將報錯。



      accumulator

      默認(rèn)傳入上一次調(diào)用回調(diào)函數(shù)的的返回值。

      初始值: initialValue存在的話,則是initialValue 若沒有則是數(shù)組的第一個元素



      currentValue

      數(shù)組中正在處理的元素。



      index 可選

      數(shù)組中正在處理的當(dāng)前元素的索引。 如果提供了initialValue,則起始索引號為0,否則從索引1起始。



      array可選

      調(diào)用reduce()的數(shù)組



      一個小小的例子

      例1 無initialValue

      var  arr = [1, 2, 3, 4, 5];

      sum = arr.reduce(function(result, cur, index, arr) {

          console.log(result, cur, index,arr);

          return result+ cur;

      })

      console.log(sum) // 最后的結(jié)果是15



      result cur index arr

      第1次 1 2 1 [1, 2, 3, 4, 5]

      第2次 3 3 2 [1, 2, 3, 4, 5]

      第3次 6 4 3 [1, 2, 3, 4, 5]

      第4次 10 5 4 [1, 2, 3, 4, 5]

      例2 有initialValue 傳入10

      var  arr = [1, 2, 3, 4, 5];

      sum = arr.reduce(function(result, cur, index, arr) {

          console.log(result, cur, index,arr);

          return result+ cur;

      },10)

      console.log(sum) // 最后的結(jié)果是25



      result cur index arr

      第1次 10 1 0 [1, 2, 3, 4, 5]

      第2次 11 2 1 [1, 2, 3, 4, 5]

      第3次 13 3 2 [1, 2, 3, 4, 5]

      第4次 16 4 3 [1, 2, 3, 4, 5]

      第5次 20 5 4 [1, 2, 3, 4, 5]

      回調(diào)函數(shù)的返回值

      上面的例子返回的都是一個整型數(shù)字,如果希望返回其他類型的數(shù)據(jù)呢?



      這個就跟accumulator的初始值有關(guān)系了。

      下面的例子我們傳入的是一個object {sum: 0}



      var items = [0,1,2,3,4];

      var reducer = function add(sumT, item) {

        console.log(sumT)

        sumT.sum = sumT.sum + item;

        return sumT;

      };

      var total = items.reduce(reducer, {sum: 0});

      console.log(total); // {sum:1130}



      運行結(jié)果



       {sum: 0}

       {sum: 1}

       {sum: 3}

       {sum: 6}

       {sum: 10}



      reduce()的應(yīng)用

      1. 數(shù)組扁平化

        遞歸+reduce



        let arr = [1, 2, '3js', [4, 5, [6], [7, 8, [9, 10, 11], null, 'abc'], {age: 12}, [13, 14]], '[]'];



        function flatten(arr) {

          if(Array.isArray(arr)) {

            return arr.reduce((prev, cur) => {

               // 如果遍歷的當(dāng)前項是數(shù)組,遞歸調(diào)用flatten

              return Array.isArray(cur) ? prev.concat(flatten(cur)) : prev.concat(cur)

            }, [])

          } else {

            throw new Error(' 當(dāng)前參數(shù)不是數(shù)組')

          }

        }

        console.log(flatten(arr));



        PS:這里的throw new Error只是用來判斷一開始的arr,這是因為在遞歸只傳入數(shù)組。


      日歷

      鏈接

      個人資料

      存檔

      主站蜘蛛池模板: 激情五月综合色婷婷一区二区| 国产专区在线播放| 精品日韩色国产在线观看| 免费无码国模国产在线观看| 日韩女优在线观看| 伊人精品在线视频| 成 人 色 网 站免费观看| 国产亚洲精品品视频在线| 久久不射网站| 亚洲中文字幕一区二区| 粉色午夜视频| 国产精品视频熟女韵味| 国产伊人av| 日本深夜福利在线观看| 亚洲国产精品13p| 一起操网站| 欧美高清视频在线观看| 最近日本免费观看高清视频 | 久久久久久久久久久久久久av| 性xxxx欧美老妇胖老太性多毛| 国产成人午夜福利免费无码r| 国产成人av一区二区三区在线观看| av久色| 亚洲国产精品成人一区二区在线| 亚洲人成自拍网站在线观看| 午夜a视频| 久久天堂综合亚洲伊人HD妓女| 神马午夜福利不卡片在线| 免费国产人成18在线观看| 超碰在线播放97| 欧洲精品色在线观看| 亚洲中文无码成人片在线观看| 强行挺进白丝老师翘臀网站| 欧美日韩极品| 国产精品日韩中文字幕熟女| 又粗又硬又黄又爽的免费视频| av人摸人人人澡人人超碰小说| 午夜福利三级理论电影| 国产亚洲AV电影院之毛片| 国产成人高清在线观看视频 | 国产成人无码a区在线观看视频|