国产探花免费观看_亚洲丰满少妇自慰呻吟_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}  */

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

總結

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宣城市| 江永县| 大方县| 屏南县| 台山市| 咸宁市| 张家口市| 牟定县| 宁安市| 崇左市| 车致| 石台县| 淳化县| 罗城| 乌兰察布市| 西和县| 陇川县| 鄂尔多斯市| 禄丰县| 翁源县| 安远县| 娄烦县| 定南县| 和政县| 讷河市| 额敏县| 泰安市| 民乐县| 江都市| 防城港市| 彩票| 通河县| 济阳县| 万安县| 江阴市| 安徽省| 鹿泉市| 酒泉市| 阜南县| 西昌市| 上虞市|