1. 程式人生 > 實用技巧 >淺談JS中 reduce() 的用法(轉帖)

淺談JS中 reduce() 的用法(轉帖)

過去有很長一段時間,我一直很難理解 reduce() 這個方法的具體用法,平時也很少用到它。事實上,如果你能真正瞭解它的話,其實在很多地方我們都可以用得上,那麼今天我們就來簡單聊聊JS中 reduce() 的用法。

一、語法

arr.reduce(function(prev,cur,index,arr){
...
}, init);

其中,
arr 表示原陣列;
prev 表示上一次呼叫回撥時的返回值,或者初始值 init;
cur 表示當前正在處理的陣列元素;
index 表示當前正在處理的陣列元素的索引,若提供 init 值,則索引為0,否則索引為1;
init 表示初始值。

看上去是不是感覺很複雜?沒關係,只是看起來而已,其實常用的引數只有兩個:prev

cur。接下來我們跟著例項來看看具體用法吧~

二、例項

先提供一個原始陣列:

求和

var sum = arr.reduce(function (prev, cur) {
    return prev + cur;
},0);

求最大項

var max = arr.reduce(function (prev, cur) {
    return Math.max(prev,cur);
});

去重

var newArr = arr.reduce(function (prev, cur) {
    prev.indexOf(cur) === -1 && prev.push(cur);
    return prev;
},[]);


作者:前端王睿
連結:https://www.jianshu.com/p/541b84c9df90
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。