JavaScript高阶函数的使用
编程范式:命令式编程/声明式编程
编程范式:面向对象编程(第一公民:对象)/函数式编程(第一公民:函数)
filter/map/reduce
高阶函数是指函数本身所需要的参数也是一个函数。
let newNums=[];
// 1.需求:取出所有小于一百的数字
for(let n of nums){
if(n<100){
newNums.push(n);
}
}
// 2.需求:将所有小于100的数字进行转化:全部*2
let new2Nums=[];
for(let n of newNums){
new2Nums.push(n*2);
}
console.log(new2Nums);
// 3.需求:将所有的new2Nums数字相加,得到最终的记过
let total=0;
for (let n of new2Nums){
total+=n;
}
console.log(total);
三种函数的用法:filter/map/reduce
高阶函数是指函数本身所需要的参数也是一个函数。
const nums=[10,20,11,30,333,40,887,50];
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)
1. filter函数的使用
filter里面传一个回调函数,filter中的回调函数必须返回一个boolean值
true:当返回true时,函数内部会自动将这次回调的n加入到新的数组中
false:当返回false时,函数内部会过滤掉这次的n
let newNums = nums.filter(function (n) {
return n<100
})
console.log(newNums)
2. map函数的使用
let new2Nums=newNums.map(function (n) {
return n*2
})
console.log(new2Nums)
3. reduce函数的使用
reduce作用:对数组中所有的内容进行汇总
let total = new2Nums.reduce(function (preValue,n) {
return preValue+n;
},0)
console.log(total)
简写:
const nums=[10,20,11,30,333,40,887,50];
let total=nums.filter(n=>n<100).map(n=>n*2).reduce((preValue,n)=>preValue+n)
console.log(total)