140-重温基础:高阶函数

本文是重温基础系列文章的第二十一篇。

今日感受:想家。

本章节复习的是JS中的高阶函数,可以提高我们的开发效率。

1.介绍

个人简单理解为,一个函数可以接收其他函数作为参数,这种函数便称为高阶函数,而主要目的就是为了能接收其他函数作为参数。

Q: 为什么可以接收一个函数作为参数?

A: 因为函数可以接收变量作为参数,而变量可以声明一个方法。

简单实例:

这段代码的意思:定义方法 ,接收两个参数,方法 和变量 ,在方法 中返回一段字符串,当执行方法 并传入参数方法 和参数 的时候,返回 。

也可以直接调用JS内置方法:

2.常用高阶函数

2.1 map()

方法的作用是:接收一个函数作为参数,对数组中每个元素按顺序调用一次传入的函数并返回结果,不改变原数组,返回一个新数组

通常使用方式: ,更多详细介绍可以参考 MDN Array.map()。

参数

: 需要操作的数组;

: 处理的方法,四个参数;

执行 函数时使用的 值,可选

调用 方法的数组,可选

当前处理的元素的索引,可选

当前处理的元素的

返回值

返回一个处理后的新数组。

实例

对比 循环, 书写起来更加简洁:

作为高阶函数,事实上它把运算规则抽象了。

2.2 reduce()

方法的作用是:接收一个函数,对数组进行累加操作,把累计结果和下一个值进行操作,最后返回最终的单个结果值。

通常使用方式: ,更多详细介绍可以参考 MDN Array.reduce()

参数

: 累记器的方法,四个参数:

调用 方法的数组,可选

当前处理的元素的索引,可选

当前处理的元素的,可选

上一次处理的返回值,或者初始值

初次调用 时候 参数的初始值,默认数组第一个元素,可选

返回值

返回一个最终的累计值。

实例

数组求和

二维数组转化为一维

2.3 filter()

方法的作用是:接收一个函数,依次作用数组每个元素,并过滤符合函数条件的元素,将剩下的数组作为一个新数组返回。

通常使用方式: ,更多详细介绍可以参考 MDN Array.filter()

参数

: 过滤条件的方法,当返回 则保存该元素,反之不保留,三个参数:

调用 方法的数组,可选

当前处理的元素的索引,可选

当前处理的元素

执行 时的用于 的值,可选

返回值

返回一个过滤剩下的元素组成的新数组。

实例

过滤奇数值

过滤不满足条件的值

过滤空字符串

总结下: 主要作为筛选功能,因此核心就是正确实现一个“筛选”函数。

2.4 sort()

方法的作用是:接收一个函数,对数组的元素进行排序,并返回排序后的新数组。默认排序顺序是根据字符串Unicode码点

通常使用方式: ,更多详细介绍可以参考 MDN Array.sort()compareFunction 可选用来指定按某种顺序进行排列的函数。如果省略,元素按照转换为的字符串的各个字符的Unicode位点进行排序。参数

: 指定按某种顺序进行排列的函数,若省略则按照转换为的字符串的各个字符的Unicode位点进行排序,两个可选参数:

返回 和 两个值的大小的比较结果, 根据返回结果进行排序:

若 小于 0 ,则 排在 前面;

若 等于 0 ,则 位置不变;

若 大于 0 ,则 排在 后面;

返回值

返回排序后的新数组,并修改原数组

实例

升序降序数组

字符串排序

总结下: 主要作为排序功能,因此核心就是正确实现一个“排序”函数。

3. 参考文章

阮一峰 JS高阶函数

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190216G04A8300?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券