国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

js中的reduce()函數講解

2019-11-19 12:15:56
字體:
來源:轉載
供稿:網友

定義:

reduce() 方法接收一個函數作為累加器,數組中的每個值(從左到右)開始縮減,最終計算為一個值。對空數組是不會執行回調函數的。

案例

1.數組求和

  // 1.數組求和  var arr = [1,5,8,6,15,78,65,25,48,55]  var sum = arr.reduce(function(total,currentValue){    return total+currentValue;  });  console.log(sum);//306  var eachSum = 0;  arr.forEach(function(currentValue){    eachSum += currentValue;  })  console.log(eachSum);//306

2.合并二維數組

  //2.合并二維數組  var twoArr = [['mu','zi'],['dig','big'],['lucky','jiji']];  var oneArr = twoArr.reduce(function(total,currentValue){    // console.log(total)    return total.concat(currentValue);  })  console.log(oneArr);//["mu", "zi", "dig", "big", "lucky", "jiji"]

3.統計一個數組中有多少個不重復的單詞:

  //3.統計一個數組中有多少個不重復的單詞:  // 不用reduce時:   var arr = ["apple","orange","apple","orange","pear","orange"];   function getWordCnt(){     var obj = {};     for(var i= 0, l = arr.length; i< l; i++){       var item = arr[i];       obj[item] = (obj[item] +1 ) || 1;     }     return obj;   }  console.log(getWordCnt());//{apple: 2, orange: 3, pear: 1}  // 用reduce時:   var arr = ["apple","orange","apple","orange","pear","orange"];   function getWordCnt(){     return arr.reduce(function(prev,next){       prev[next] = (prev[next] + 1) || 1;       return prev;     },{});   }   console.log(getWordCnt());//{apple: 2, orange: 3, pear: 1}

4.對reduce的理解:

reduce(callback,initiaValue)會傳入兩個變量,回調函數(callback)和初始值(initiaValue)。

假設函數有個傳入參數,prev和next,index和array。 Prev和next是你必須要了解的。

當沒有傳入初始值時,prev是從數組中第一個元素開始的,next是第二個函數。

但是當傳入初始值(initiaValue)后,第一個prev將是initivalValue,next將是數組中的第一個元素。

比如:

  // 4.對reduce的理解:  var arr = ["apple","orange"];   function noPassValue(){     return arr.reduce(function(prev,next){       console.log("prev:",prev);       console.log("next:",next);       return prev;     });   }   function passValue(){     return arr.reduce(function(prev,next){       console.log("prev:",prev);       console.log("next:",next);       prev[next] = 1;       return prev;     },{});  }   console.log("No Additional parameter:",noPassValue());   console.log("----------------");   console.log("With {} as an additional parameter:",passValue());   /*  VM415673:4 prev: apple   VM415673:5 next: orange   VM415673:4 prev: apple   VM415673:5 next: orange   VM415673:19 No Additional parameter: apple   VM415673:20 ----------------   VM415673:13 prev: {}   VM415673:14 next: apple   VM415673:13 prev: {apple: 1}   VM415673:14 next: orange   VM415673:21 With {} as an additional parameter: {apple: 1, orange: 1}  */

若有不足請多多指教!希望給您帶來幫助!

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。如果你想了解更多相關內容請查看下面相關鏈接

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 白山市| 凤阳县| 富阳市| 句容市| 凤庆县| 同心县| 武冈市| 左权县| 宣威市| 新疆| 达拉特旗| 秀山| 东台市| 榕江县| 那曲县| 修武县| 彭泽县| 宁武县| 博客| 荆州市| 富川| 绥化市| 西贡区| 延吉市| 巨鹿县| 云阳县| 林周县| 贵定县| 当雄县| 武定县| 云安县| 思南县| 济阳县| 桑植县| 佛冈县| 涿州市| 广灵县| 乐清市| 安达市| 广平县| 扶沟县|