// 编程范式: 命令式编程/声明式编程
// 编程范式: 面向对象编程(第一公民:对象)/函数式编程(第一公民:函数)
// filter/ map/ reduce
// filter 中的回调函数有一个要求: 必须返回一个boolean值
// true: 当返回true时,函数内部会自动将这次回调的n加入到新的数组中
// false: 当返回false时,函数内部会过滤掉这次的n
// 需求: 找出小于100的数字
const nums = [10, 20, 111, 222, 444, 40, 50]
// 1. filter函数的使用(返回布尔值)
let newNums = nums.filter(function(n) {
return n < 100 // false / true
})
console.log(newNums);
// 需求: 小于100的数字乘2
// 2. map函数的使用(直接返回计算结果)
// 20, 40, 80, 100
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) //这里的0就是初始的 preValue
console.log(total);
// 过程!!!
// 第一次:preValue 0 n 20 0+20
// 第二次:preValue 20 n 40 20+40
// 第三次:preValue 60 n 80 60+80
// 第四次:preValue 140 n 100 140+100
// 最终结果 240
// 方法二 123步合成一步 函数式编程 ------- 高阶函数 --------
let total = nums.filter(function(n) {
return n < 100
}).map(function(n) {
return n * 2
}).reduce(function(preValue, n) {
return preValue + n
}, 0)
// 方法三 最简洁办法 箭头函数 一步即可
let total = nums.filter(n => n < 100).map(n => n * 2).reduce((pre, n) => pre + n);
console.log(total);
高阶函数示例
最新推荐文章于 2024-06-15 14:41:39 发布