// filter/map/reduce ,数组长度多少回调函数就执行多少次
// filter中的回调函数有一个要求:必须返回一个boolean值
//true:当返回true时,函数内部会自动将这次回调的n加入到新的数组中
// false: 当返回false时,函数内部会过滤掉这次的n
//filter,筛选小于100的数字
const nums = [10, 20,111, 222, 444, 40,50];
let newNums = nums.filter(function (n) {
return n<100;
});
console.log(newNums);
//map,newNums数组中的元素增大2倍
let new2Nums = newNums.map(function (n) {
return n*2;
});
console.log(new2Nums);
//reduce,对数组中所有元素汇总
// 累加,初始化preValue的值为0
let sum = new2Nums.reduce(function (preValue,n) {
return preValue+n;
},0);
console.log(sum);
// 累乘,初始化preValue的值为1
let sum2 = new2Nums.reduce(function (preValue,n) {
return preValue*n;
},1);
console.log(sum2);
// 函数式编程,链式调用
let total = nums.filter(function (n) {
return n<100;
}).map(function (n){
return n*2;
}).reduce(function (preValue,n) {
return preValue+n;
},0);
console.log(total);
//箭头函数
let total2 = nums.filter(n => n<100).map(n => n*2).reduce((pre,n) => pre + n);
console.log(total2);