JavaScript的高阶函数
Reduce
reduce 的语法:
代码语言:javascript复制Array.reduce(callback, init)
callback里包含了四个参数
- previousValue 上一次调用的返回值
- currentValue 当前处理的元素的值
- index 当前元素的索引
- array 调用reduce的数组
- initialValue参数,默认从第二个元素开始
我们常用的数组求和
求一个数组的合计, 我们常用的方式是用 for 循环
代码语言:javascript复制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 去求和会更好
代码语言:javascript复制var arr2 = [{ amount: 20 }, { amount: 30 }];
function sum2(arr) {
let total = 0;
for (const item of arr) {
total = item;
}
return total;
}
Reduce数组求和
代码语言:javascript复制function sum3(arr) {
return arr.reduce((pre, cur) => pre cur);
}
用 reduce 则用 很少 的代码解决,尤其是采用了 ==es6== 语法后,更加简单
但是 reduce 并不仅此而已,还有很多高级使用方法
统计每个元素出现次数
代码语言:javascript复制function count(arr) {
return arr.reduce((pre, cur) => {
if (cur in pre) {
pre[cur] ;
} else {
pre[cur] = 1;
}
return pre;
}, []);
}
数组去重
代码语言:javascript复制function distinct(arr) {
return arr.reduce((pre, cur) => {
if (pre.includes(cur)) {
return pre;
} else {
return pre.concat(cur);
}
}, []);
}
待更新