概述
對數(shù)組中的所有元素調(diào)用指定的回調(diào)函數(shù)通危。該回調(diào)函數(shù)的返回值為累積結(jié)果沉迹,并且此返回值在下一次調(diào)用該回調(diào)函數(shù)時作為參數(shù)提供抽高。
語法
arr.reduce(callback[, initialValue])
參數(shù)
- callback(一個在數(shù)組中每一項上調(diào)用的函數(shù)皆辽,接受四個函數(shù):)
- previousValue(上一次調(diào)用回調(diào)函數(shù)時的返回值萨赁,或者初始值)
- currentValue(當(dāng)前正在處理的數(shù)組元素)
- currentIndex(當(dāng)前正在處理的數(shù)組元素下標)
- array(調(diào)用reduce()方法的數(shù)組)
- initialValue(可選的初始值弊琴。作為第一次調(diào)用回調(diào)函數(shù)時傳給previousValue的值)
返回值
通過最后一次調(diào)用回調(diào)函數(shù)獲得的累積結(jié)果。
var orders = [
{amount: 100},
{amount: 238},
{amount: 300},
{amount: 50}
];
// 使用for循環(huán)實現(xiàn)累加
var total = 0;
for(var i = 0; i < orders.length; i++) {
total += orders[i].order;
}
// 使用reduce重寫
var total = orders.reduce(function(sum, order){
return sum + order.amount;
}, 0);
// 使用es6重寫
var total = orders.reduce((sum, order) => sum + order.amount, 0);
console.log(total);
// 輸出為688