數(shù)組reduce()方法用法

  • 語法

array.reduce(function(prev, cur, currentIndex, arr), initialValue)

其中:
pre:必需。初始值initialValue, 或者計算結(jié)束后的返回值。
cur: 必需。當前元素
currentIndex: 可選。當前元素的索引,如果沒有提供initialValue,reduce 會從索引1的地方開始執(zhí)行 callback 方法,跳過第一個索引。如果提供initialValue,從索引0開始
arr: 可選。當前元素所屬的數(shù)組對象。

看上去貌似很復(fù)雜,其實我們常用的參數(shù)只有兩個,prev和cur
下面通過幾個實例看一下具體用法吧。

  • 對象里屬性求和
var result = [
    {
        subject: 'math',
        score: 10
    },
    {
        subject: 'chinese',
        score: 20
    },
    {
        subject: 'english',
        score: 30
    }
];

var sum = result.reduce((prev, cur)=> {
    return cur.score + prev;
}, 0);
console.log(sum) //60

由于傳入了初始值0,所以開始時prev的值為0,cur的值為數(shù)組第一項10,相加之后返回值為10作為下一輪回調(diào)的total值,然后再繼續(xù)與下一個數(shù)組項相加,以此類推,直至完成所有數(shù)組項的和并返回。

  • 數(shù)組去重
    方法1:
let arr = [1,2,3,4,4,1]
let newArr = arr.reduce((pre,cur)=>{
    if(!pre.includes(cur)){
      return pre.concat(cur)
    }else{
      return pre
    }
},[])
console.log(newArr);// [1, 2, 3, 4]

方法2:

let arr = [1,2,3,4,4,1]
let newArr = arr.reduce((prev,cur)=>{
    prev.indexOf(cur) === -1 && prev.push(cur);
   return prev;
},[])
console.log(newArr)// [1, 2, 3, 4]
  • 將二維數(shù)組轉(zhuǎn)化為一維
let arr = [[0, 1], [2, 3], [4, 5]]
let newArr = arr.reduce((pre,cur)=>{
    return pre.concat(cur)
},[])
console.log(newArr); // [0, 1, 2, 3, 4, 5]

結(jié)論:reduce() 是數(shù)組的歸并方法,與forEach()、map()、filter()等迭代方法一樣都會對數(shù)組每一項進行遍歷,但是reduce() 可同時將前面數(shù)組項遍歷產(chǎn)生的結(jié)果與當前遍歷項進行運算,其它的則不可以。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容