1.语法
array.reduce(function(prev, current, currentIndex, arr), initialValue)
2.常见用法
2.1.数组乘积和求和
const arr = [1, 2, 3, 4];
const sum = arr.reduce((x,y)=>x+y)
const mul = arr.reduce((x,y)=>x*y)
console.log( sum );
console.log( mul );
2.2. 数组求最大值和最小值
const array = [5, 4, 7, 8, 9, 2];
const max = array.reduce((a, b) => {
if (a > b) {
return a;
}
return b;
});
const min = array.reduce((a, b) => {
if (a > b) {
return b;
}
return a;
});
console.log(max);
console.log(min);
2.3.统计数组中各元素出现的次数
const array = ['a', 'b', 'b', 'b', 'a', 'c'];
const result = array.reduce((pre, cur) => {
const newPre = pre;
if (cur in newPre) {
newPre[cur] += 1;
} else {
newPre[cur] = 1;
}
return newPre;
}, {});
console.log(result);
2.4.数组去重
const array = ['a', 'b', 'b', 'b', 'a', 'c'];
const result = array.reduce((pre, cur) => {
if (!pre.includes(cur)) {
return pre.concat(cur);
}
return pre;
}, []);
console.log(result);
2.5.二维数组扁平化
const arr = [[0, 1], [2, 3], [4, 5]];
const newArr = arr.reduce((pre, cur) => {
const nArr = pre.concat(cur);
return nArr;
}, []);
console.log(newArr);