97国产精品视频人人做人人爱,3344在线观看无码,成年人国产视频,欧美日一级片,在线看AV天堂,高清无码一本到东京热,欧美一级黄片一区2区,免费又爽又刺激高潮网址

js reduce()

2019-11-1    seo達人

是什么

ES5提供的數組的方法。

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



PS: 回調函數的返回結果類型和傳入的初始值相同



語法以及參數

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

1

initialValue 可選

如果有的話則作為,第一次調用 callback函數時的第一個參數的值。

如果沒有提供初始值,callback則使用數組的第一個元素,作為第一次調用的初始值。

在沒有初始值的空數組上調用 reduce 將報錯。



accumulator

默認傳入上一次調用回調函數的的返回值。

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



currentValue

數組中正在處理的元素。



index 可選

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



array可選

調用reduce()的數組



一個小小的例子

例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) // 最后的結果是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) // 最后的結果是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]

回調函數的返回值

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



這個就跟accumulator的初始值有關系了。

下面的例子我們傳入的是一個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}



運行結果



 {sum: 0}

 {sum: 1}

 {sum: 3}

 {sum: 6}

 {sum: 10}



reduce()的應用

  1. 數組扁平化

    遞歸+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) => {

           // 如果遍歷的當前項是數組,遞歸調用flatten

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

        }, [])

      } else {

        throw new Error(' 當前參數不是數組')

      }

    }

    console.log(flatten(arr));



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


日歷

鏈接

個人資料

藍藍設計的小編 http://m.0391cbd.com

存檔

主站蜘蛛池模板: 久久久久久久久久国产精品| 91在线丝袜| 国产在线小视频| 国产欧美精品一区aⅴ影院| 在线日韩日本国产亚洲| 91福利免费视频| 91口爆吞精国产对白第三集| 中美日韩在线网免费毛片视频| 国产高清毛片| 亚洲高清在线播放| 熟妇人妻无乱码中文字幕真矢织江 | 狼友视频国产精品首页| 成人久久精品一区二区三区| 亚洲伦理一区二区| 午夜精品久久久久久久无码软件| a毛片在线| 国产精品亚洲日韩AⅤ在线观看| 就去吻亚洲精品国产欧美| 色亚洲成人| 国产欧美视频在线| 综合色在线| 国产成人午夜福利免费无码r| 粉嫩国产白浆在线观看| 欧美午夜理伦三级在线观看| 成人av专区精品无码国产| 亚洲浓毛av| 欧美成人aⅴ| 亚洲成a人片77777在线播放| 国产玖玖视频| 野花国产精品入口| 激情无码字幕综合| 免费观看无遮挡www的小视频| 亚洲国产成人精品一二区| 欧美亚洲第一页| 伊人无码视屏| 色综合久久88| 国产真实自在自线免费精品| 国产精品乱偷免费视频| 97av视频在线观看| 国产最新无码专区在线| 亚洲AV无码乱码在线观看裸奔 | 67194成是人免费无码| 在线看片免费人成视久网下载| 久久久亚洲色| 国产福利观看| 中文字幕无线码一区| 欧美日韩亚洲综合在线观看| 国内精品久久人妻无码大片高| 97国产精品视频人人做人人爱| 精品小视频在线观看| 欧美成人午夜在线全部免费| 一本大道东京热无码av| 久久国产亚洲欧美日韩精品| 久久久黄色片| 亚洲黄色成人| 精品伊人久久大香线蕉网站| 精品人妻无码中字系列| 国产欧美亚洲精品第3页在线| 欧美精品xx| 中文字幕一区二区人妻电影| 第一页亚洲| 精品久久久久久成人AV| 无码粉嫩虎白一线天在线观看| 久久久精品国产亚洲AV日韩| 亚洲精品手机在线| 99精品视频播放| 欧美不卡视频在线| 色吊丝av中文字幕| 97国产在线视频| 福利在线不卡| 久久久久亚洲AV成人网站软件| yy6080理论大片一级久久| 18禁影院亚洲专区| 久久综合丝袜日本网| 国产无人区一区二区三区| 亚洲国产精品日韩专区AV| 熟女视频91| 国产第三区| 久青草免费视频| 伊人91在线| 亚洲一区二区三区在线视频| 日韩毛片在线播放|