函数式编程的高逼格reduce()方法
reduce()方法
最近在做项目时,用到了reduce()方法,就总结了一下该方法的用法。
定义
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。对空数组是不会执行回调函数的。
语法
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
参数
参数描述
function(total,currentValue, currentIndex,arr)必需。用于执行每个数组元素的函数。total必需。初始值, 或者计算结束后的返回值。currentValue必需。当前元素。currentIndex可选。当前元素的索引。arr可选。当前元素所属的数组对象。initialValue可选。传递给函数的初始值。
用法
求数组项之和
let arr
= [23, 34, 6, 67,10]
let totalSum
= arr
.reduce((total
, num
) => {
return total
+ num
})
console
.log(totalSum
)
求数组项最大值
let arr
= [23, 34, 6, 67,10]
let max
= arr
.reduce((prev
, cur
) => {
return Math
.max(prev
, cur
)
})
console
.log(max
)
数组去重
let arr
= [23, 34, 6, 23, 67,6]
let newArr
= arr
.reduce((pre
, cur
) => {
if (!pre
.includes(cur
)) {
return pre
.concat(cur
)
} else {
return pre
}
}, [])
console
.log(newArr
)
将二维数组转化为一维
let arr
= [[0, 1], [2, 3], [4, 5]]
let newArr
= arr
.reduce((pre
, cur
) => {
return pre
.concat(cur
)
}, [])
console
.log(newArr
);
对象里的属性求和
var result
= [
{
subject
: 'math',
score
: 10
},
{
subject
: 'chinese',
score
: 20
},
{
subject
: 'english',
score
: 30
}
];
var totalSum
= result
.reduce((prev
, cur
) => {
return cur
.score
+ prev
}, 0);
console
.log(totalSum
)