本文是重温基础系列文章的第二十一篇。
今日感受:想家。
本章节复习的是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高阶函数
领取专属 10元无门槛券
私享最新 技术干货