【reduce用法】javaScript reduce 相关用法

490 阅读1分钟

定义和用法

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
},[])
// 答案 ['哈哈', '呵呵']