话不多说,直接上代码:
虽然这样能解决问题,看起来也不难,但是如果问题再复杂一点,运用到实际上,我们就不得不在函数内部定义一堆变量、做一堆循环、写一堆代码等,这就会导致我开头说的问题。这时候这几个高阶函数就能派上用场啦。
1.filter()
- 功能:顾名思义,filter 就是过滤器的意思。它用于把 Array 的某些元素过滤掉,然后返回剩下的元素。
- 参数:接收一个函数作为其参数。
- 特点:数组方法,传入的函数必须返回 boolean 值。它能把传入的函数依次作用于每个元素,然后根据返回值是 true 还是 false 决定保留还是丢弃该元素。
- 用法:以上面的问题为例。上诉问题提到需获取数组中大于60的数字,那不就正好可以使 filter() 嘛,只需要将大于60设定为过滤条件即可。代码如下:
2.map()
- 功能:map 有 映射 的意思,也就是这个函数的功能。它用于将 Array 中的所有元素进行一致的改变。
- 参数:接收一个函数作为其参数。
- 特点:数组方法。它能把传入的函数依次作用于每个元素,并把结果生成一个新的 Array。
- 用法:上述问题提到需将新数组乘以2,那使用 map() 再合适不过了。代码如下:
3.reduce()
- 功能:它用于把一个函数作用在这个 Array 的每一个元素上,然后把结果继续和序列的下一个元素做累积计算。
- 参数:接受一个函数作为其参数,该函数要求有两个参数,第一个参数用于保存当前累积计算的值,第二个参数则是当前的数组元素。
- 特点:数组方法。它可用于对数组的所有元素进行汇总。
- 用法:我们需要求上述问题所得到数组的总和,即可使用 reduce()。代码如下:
当我们能灵活运用这三个高阶函数时,上述问题也就变的十分简单,只需一行代码即可解决。代码如下:
这样不仅方便许多,逻辑也十分清楚,代码既简洁又明了,这就是js函数的伟大之处。
对于 filter() 的补充
filter() 接收的回调函数,其实可以有多个参数。通常我们仅使用第一个参数,表示 Array 的某个元素。回调函数还可以接收另外两个参数,分别表示元素的位置和数组本身:
这样我们就可以利用 filter() 巧妙实现数组去重:
以上就是文章的全部内容啦,初入前端,还请各位大佬多多指教!
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!