其实就是函数来的 ,下面讲常见的几种高阶函数: 三个:
filter / map / reduce
1.Array filter() 方法
如果有数组: let arr = [60,50,105,99,153,125,29]; 如果要把小于100 的过滤出来,那么:
其实这个方法有过滤器的意思,所以就是过滤,他的参数是一个函数,函数的参数就是这个遍历值,其次这个函数一定得返回一个 Boolean 型,为true时 吧这个值返回装进一个新数组,为false则不加入新数组,到最后结束就 把 整个新数组当返回值返回:
注意: filter() 不会对空数组进行检测。
注意: filter() 不会改变原始数组。
2. Array map() 方法
其实 map 也一样 不会更新数组 他返回的是一个新数组,其次,他对每个元素进行遍历,他返回的不是布尔型,返回什么都可以,你返回什么 我就往里面装什么:
因为他有这个特性,所以他可以直接放入方法:
可以看出 Math.sqrt是个球平方根的函数,是的 他是一个函数! 仔细想想即可。
3.reduce() 方法
其实这个有点绕 但是很简单:
比如我要吧数组里面的全部值求出来:
其实吧 注释文档写的很清楚了,蛮简单的 就是内个 初始值 要注意一下 一般为0;sum类似于静态的,而n是每次遍历的元素值。
注意: reduce() 对于空数组是不会执行回调函数的。
语法
看下面除了内几个还有些很好玩的参数:比如下标
参数 | 描述 |
function(total,currentValue, index,arr) | 必需。用于执行每个数组元素的函数。 函数参数: |
initialValue | 可选。传递给函数的初始值 |
参数 | 描述 |
total | 必需。初始值, 或者计算结束后的返回值。 |
currentValue | 必需。当前元素 |
currentIndex | 可选。当前元素的索引 |
arr | 可选。当前元素所属的数组对象。 |
总结:总结:
其实 你得举一反三:
1、2、3 我这里讲了三个高阶函数【常用的】 ,那么你就得去把他们结合起来:
他们返回的是一个数组对吧,那你可以用链式编程 在他们计算完后.xxxx 继续写,那么
你就可以把你要用到的代码很压缩成一点点了,这是一个思维。
作者:咸瑜