reduce()函数会将数组中的每个元素执行一个自定义操作(而且上一次的输出会作为下一次的一个输入),将其结果汇总为单个值返回。
数组名.reduce(function(accumulator, currentValue, currentIndex, arr), initialValue);
/*
accumulator: 必需。累计器
currentValue: 必需。当前元素
currentIndex: 可选。当前元素的索引;
arr: 可选。要处理的数组
initialValue: 可选。传递给函数的初始值,相当于accumulator的初始值
*/
例一:数组求和
let arr = [1, 2, 3, 4, 5];
function add(sum, curr) { //自定义操作函数
return sum + curr
}
var a = arr.reduce(add, 0);
console.log(a); // 得到15
例二:求数组最大值
let arr = [23, 123, 342, 12];
function maxArr(pre, cur, index, arr) { //自定义操作函数
return pre > cur ? pre : cur
}
let max = arr.reduce(maxArr);
console.log(max); //得到342
例三:统计字符串中字符出现的次数
let str = 'abcdfaabc';
function countStr(res, cur) {
res[cur] ? res[cur] ++ : res[cur] = 1 // 如果cur第一次出现,记为1 否则记录数+1
return res;
}
let countArr = str.split('').reduce(countStr, {})
console.log(countArr);
例四:去掉数组中的重复元素
let arr = [1, 2, 3, 3, 3, 4, 4, 1]
function delRepeat(pre,cur) {
if(!pre.includes(cur)){
return pre.concat(cur) // 合并pre 与 cur, 并返回一个新数组
}else{
return pre
}
}
let newArr = arr.reduce(delRepeat,[])
console.log(newArr);
网友评论