reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

reduce() 可以作为一个高阶函数,用于函数的 compose。

语法

array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
参数描述
total必需。初始值, 或者计算结束后的返回值。
currentValue必需。当前元素
currentIndex可选。当前元素的索引
arr可选。当前元素所属的数组对象。

找最大值

// 找最大值
const result = [1,2,3,3,2,1,6,5].reduce((x,y) => Math.max(x,y));
// 打印结果
console.log(result); // 6

数组去重

// 去重
const result = [1,2,3,3,2,1,6,5].reduce((x,y) => {
    // 检测是否存在 
    if(x.indexOf(y) === -1){
        x.push(y);
    }
    return x;
},[]);
// 打印结果
console.log(result); // [ 1, 2, 3, 6, 5 ]

数组归类

首先准备一个数组,然后开始使用reduce方法

// 数组
const dataList = [
    {name:'武器',value:'木剑'},{name:'防具',value:'锁子甲'},
    {name:'武器',value:'铁剑'},{name:'消耗品',value:'苹果'},
    {name:'消耗品',value:'西瓜'}
];
// 归类
const resultObj = dataList.reduce((x,y) => {
    const { name } = y;
    if(!x[name]){
        x[name] = [];
    }
    x[name].push(y.value);
    return x;
},{});
// 打印结果
console.log(resultObj); // 拿到的结果{ '武器': [ '木剑', '铁剑' ], '防具': [ '锁子甲' ], '消耗品': [ '苹果', '西瓜' ] }

字符串反转

// 字符串
const str = 'hello word';
// 先转成数组 然后反转
const resultStr = Array.from(str).reduce((x,y) => {
    return `${y}${x}`
},'');
// 打印结果
console.log(resultStr); // drow olleh
Last modification:March 9, 2024
If you think my article is useful to you, please feel free to appreciate