reduce-定义和用法
1、reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
2、reduce() 可以作为一个高阶函数,用于函数的 compose。
3、注意: reduce() 对于空数组是不会执行回调函数的
语法
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
参数
function(total,currentValue, index,arr)
total: 必需。初始值, 或者计算结束后的返回值
currentValue: 必需。当前元素
currentIndex: 可选。当前元素的索引
arr: 可选。当前元素所属的数组对象。
initialValue
可选。传递给函数的初始值
通用方法
数组元素之和
let arr = [1, 2, 3, 4, 5];
arr1.reduce((pre, cur) => pre + cur , 0); // 得到15
依次类推加减乘除就不用说了吧
数组去重
let arr_6 = [1, 2, 3, 4, 4, 1, 3, 5];
let newArr = arr_6.reduce((pre, cur) => {
if (!pre.includes(cur)) {
return pre.concat(cur);
} else {
return pre;
}
}, []);
字符统计/单词统计同理
let str_1 = "abcdcfdsaabc";
str_1.split('').reduce((res, cur) => {
res[cur] ? res[cur]++ : res[cur] = 1;
return res;
}, {});
突发奇想,既然我们能统计,依此类推,想到一个数组去重的新方法
let obj_f = {};
let newA = arr_6.filter((val) => {
obj_f[val] ? obj_f[val]++ : obj_f[val] = 1;
return obj_f[val] > 1;
});
数组扁平化处理
let arr_3 = [1, 2, [3, 4]];
arr_3.reduce((arr, val) => arr.concat(val), []);