filter()
函数的使用
filter()
函数中回调函数要求:必须返回一个boolean
值
true
:当返回为true
时,函数内部会自动将这次回调的 n 加入到新的数组中false
:当返回false
时,函数内部会过滤掉这次的 n
const nums = [10, 12, 20, 50, 60, 120, 420, 321];
let newNums = nums.filter(function (n) {
return n < 100;
})
console.log(newNums);
map()
函数的使用
let new2Nums = newNums.map(function (n) {
return n * 2;
})
console.log(new2Nums);
reduce()
函数的使用
对数组中所有内容进行汇总。传入两个参数,第二个参数0
是对prevalue
的初始化
let total = new2Nums.reduce(function (prevalue, n) {
return prevalue + n;
}, 0)
console.log(total);
- 第一次:prevalue = 0(初始化的值), n = 20(new2Nums数组中的值)
- 第二次:prevalue = 20(第一次调用返回的值), n = 24(new2Nums数组中的值)
- 第三次:prevalue = 44(第二次调用返回的值), n = 40(new2Nums数组中的值)
- ······
三者结合使用
let totals = nums.filter(function (n) {
return n < 100;
}).map(function (n) {
return n * 2;
}).reduce(function (prevalue, n) {
return prevalue + n;
}, 0);
console.log("结合的写法", totals);
更简单的写法
let totals2 = nums.filter(n => n < 100).map(n => n * 2).reduce((prevalue, n) => prevalue + n);
console.log("更简单的写法", totals2);