JS学习知识点整理
【又见JavaScript】JS中的高阶函数
filter/map/reduce
编程范式: 命令式编程/声明式编程
编程范式: 面向对象编程(第一公民:对象)/函数式编程(第一公民:函数)
以往我们写代码,可能经常会用面向对象的编程思想去完成需求,但其实适当了解一些高阶函数,会使我们的代码可读性、性能更高~这里整理了三个高阶函数的使用方法(附上以往的思路和写法,可以做一个对比):
- 需求1:取出所有小于100的数字
以往的写法:
const nums = [10, 20, 111, 222, 444, 40, 50]
let newNums = []
for (let n of nums){
if (n < 100){
newNums.push(n)
}
}
filter()
用来迭代一个数组,并且按给出的条件过滤出符合的元素,不符合的元素会过滤掉,组成一个新的数组;
需要传入一个回调函数,并且它有一个参数(暂且叫 n),该参数是当前迭代项;- 这个回调函数, 有一个要求:必须返回一个Boolean值
返回true时:
函数内部会自动将这次回调的n加入到新的数组中
返回false:
函数内部会过滤掉这次的n - 用法:
- 这个回调函数, 有一个要求:必须返回一个Boolean值
let newNums = nums.filter(function (n) {
// 每次将n和100 进行n 是否 <100 的判断,若符合就返回true,这个符合条件的n也会被记录到这个新数组中
// 不符合判断的n 就会被过滤掉
return n < 100;
})
- 需求2:将所有小于100的数字进行转化:乘以二
以往的写法:
let new2Num = []
for (let n of nums){
new2Num.push(n * 2)
}
map()
它返回一个新的数组,数组中的元素为原始数组调用函数处理后的值- 用法:
let new2Nums = newNums.map(function (n) {
return n * 2
})
在别人的总结下进行整理的,感谢~
JavaScript中Map函数的用法(踩坑之最!!!)