定义和用法
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
reduce() 可以作为一个高阶函数,用于函数的 compose。
注意: reduce() 对于空数组是不会执行回调函数的。
语法
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
参数
| 参数 | 描述 |
|---|---|
| function(total,currentValue, index,arr) | 必需。用于执行每个数组元素的函数。 |
函数参数:
| 参数 | 描述 |
|---|---|
| total | 必需。初始值, 或者计算结束后的返回值。 |
| currentValue | 必需。当前元素 |
| currentIndex | 可选。当前元素的索引 |
| arr | 可选。当前元素所属的数组对象。 |
| initialValue | 可选。传递给函数的初始值 |
实际的运用:
var numbers = [15.5, 2.3, 1.1, 4.7];
var num=numbers.reduce((item,cart)=>{
return item+=cart
},0)
还可以利用reduce来计算一个字符串中每个字母出现次数
var str = 'asfadewqqfh';
var obj = str.split('').reduce((item,cart) => {
//三元运算符
item[cart] ? item[cart] ++ : item[cart] = 1
return item
},{})
// 答案 {a: 2, s: 1, f: 2, d: 1, e: 1, …}
用它实现es7 Object.values的效果
let aee = {1:'哈哈', 2:'呵呵'};
Object.keys(aee).reduce((r, c, i) =>{
r.push(aee[c])
return r
},[])
// 答案 ['哈哈', '呵呵']