JS高阶函数的使用
编程范式:命令式编程/声明式编程
编程范式:面向对象编程(第一公民:对象)/函数式编程(第一公民:函数)
-
filter中的回调函数有一个要求:必须返回一个boolean值(true / false)
当为true时,函数内部会将这次回调的n加入新的数组中,反之,函数内部会过滤掉这次的n
const nums = [10,69,45,199,121,88,210] // 需求1. 取出所有小于100的数字 let newNums = nums.filter(function (n){ return n < 100 }) console.log(newNums)
-
map函数将计算过的newValue添加到新的数组中
// 需求2.将所有小于100的数字进行转化:全部*2 let newNums2 =newNums.map(n=>{ return n * 2 }) console.log(newNums2)
-
reduce函数中有两个参数,一个是preValue,一个是initValue,最终返回的是return的结果
// 需求3 :将newNums2中的数字相加 // preValue保存上次return的值 ,n 是现在遍历的值 ,0 是初始值 let total = newNums2.reduce((preValue,n)=>{ return preValue + n },0) console.log(total);
如果遍历的数组是由对象组成,则
//第一个参数:preValue是Number类型,初值是0。 //第二个参数:n是正在遍历的数组 let result = 0 result= this.books.reduce((preValue,n)=>{ return preValue + n.price },0) //若将0改为[],则第一个参数的类型则是Array return result }