需求: 对数组中小于50的数乘2再相加 原始写法 vs 高阶函数(filter、map、reduce)写法/箭头函数
原始写法:
let num=[80,100,20,10,30,100,50];
// 原始做法
//第一步:
let num1=[];
for(let n of num){
if(n<50){
num1.push(n);
}
}
// 第二步:
let num2=[];
for(let n of num1){
num2.push(n*2);
}
//第三步
let total=0;
for(let n of num2){
total+=n;
}
高阶函数写法
//高阶函数(filter、map、reduce)
let total1=num.filter(function(n){
return n<50;
}).map(function(n){
return n*2;
}).reduce(function(previousValue,n){
return previousValue+n;
},0)
高阶函数箭头写法
// 高阶函数(filter、map、reduce) 箭头函数写法
let total2=num.filter(n=>n<50).map(n=>n*2).reduce((previousValue,n)=>previousValue+n);