reduce 的语法:
Array.reduce(callback, init)
callback里包含了四个参数
求一个数组的合计, 我们常用的方式是用 for 循环
var arr = [1, 2, 5, 4, 7, 10, 1];
function sum(arr) {
let total = 0;
for (let i = 0; i < arr.length; i++) {
total += arr[i];
}
return total;
}
求一个数组的合计,如果数组里的元素是对象,那么用 of 去求和会更好
var arr2 = [{ amount: 20 }, { amount: 30 }];
function sum2(arr) {
let total = 0;
for (const item of arr) {
total += item;
}
return total;
}
function sum3(arr) {
return arr.reduce((pre, cur) => pre + cur);
}
用 reduce 则用 很少 的代码解决,尤其是采用了 ==es6== 语法后,更加简单
但是 reduce 并不仅此而已,还有很多高级使用方法
function count(arr) {
return arr.reduce((pre, cur) => {
if (cur in pre) {
pre[cur]++;
} else {
pre[cur] = 1;
}
return pre;
}, []);
}
function distinct(arr) {
return arr.reduce((pre, cur) => {
if (pre.includes(cur)) {
return pre;
} else {
return pre.concat(cur);
}
}, []);
}
待更新