js高阶函数的学习
编程范式:1.命令式编程(js)2.声明式编程(vue)
3.面向对象编程(java)4.函数式编程–>区别(谁是第一公民,面向对象对象是第一公民,而函数式函数是第一公民,函数式的还可以进行链式编程)
高阶函数:函数本身需要的参数就是一个函数
1.filter
2.map
3.reduce
1.filter(多用于过滤)
filter中的回调函数有一个要求:必须返回一个boolean值(true|false)。
当返回true时,函数就自动将这次回调的n加入到新的数组中。
当返回false时,函数就会将这次回调的n过掉。
写法:
如果返回的n小于100,那么这个被回调的n就会被放入到newNums这数组中。因为上面的数组中有七个元素,那么这个n呼吁就会被回调7次。
2.map(多用于改变数组中元素的值数据处理)
源码:
写法:
注意:如果returen的值固定,那么返回的值也就固定了。
3.reduce(用于进行数据汇总)
源码:
写法:
用法解释:preValue的初始值就是由第二个reduce的参数赋予此刻为0,然后在return中进行累加,因为数组中有4个元素,因此这个参数一函数会进行4次回调,那么第一次又preValue=0+n=20使得preValue的值变成了20,第二次由preValue=20+n=40,如此类推不断累加,直到回调四次完毕以后将最终累加的preValue赋值给total并返回。
三者结合使用:
写法一:
写法二: