欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js中的reduce()函數(shù)講解

 更新時(shí)間:2019年01月18日 10:55:55   作者:muzidigbig  
今天小編就為大家分享一篇關(guān)于js中的reduce()函數(shù)講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧

定義:

reduce() 方法接收一個(gè)函數(shù)作為累加器,數(shù)組中的每個(gè)值(從左到右)開(kāi)始縮減,最終計(jì)算為一個(gè)值。對(duì)空數(shù)組是不會(huì)執(zhí)行回調(diào)函數(shù)的。

案例

1.數(shù)組求和

  // 1.數(shù)組求和
  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.合并二維數(shù)組

  //2.合并二維數(shù)組
  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.統(tǒng)計(jì)一個(gè)數(shù)組中有多少個(gè)不重復(fù)的單詞:

  //3.統(tǒng)計(jì)一個(gè)數(shù)組中有多少個(gè)不重復(fù)的單詞:
  // 不用reduce時(shí): 
  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時(shí): 
  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.對(duì)reduce的理解:

reduce(callback,initiaValue)會(huì)傳入兩個(gè)變量,回調(diào)函數(shù)(callback)和初始值(initiaValue)。

假設(shè)函數(shù)有個(gè)傳入?yún)?shù),prev和next,index和array。 Prev和next是你必須要了解的。

當(dāng)沒(méi)有傳入初始值時(shí),prev是從數(shù)組中第一個(gè)元素開(kāi)始的,next是第二個(gè)函數(shù)。

但是當(dāng)傳入初始值(initiaValue)后,第一個(gè)prev將是initivalValue,next將是數(shù)組中的第一個(gè)元素。

比如:

  // 4.對(duì)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}
  */

若有不足請(qǐng)多多指教!希望給您帶來(lái)幫助!

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

相關(guān)文章

最新評(píng)論