.map()、.filter() 和 .reduce()
最初发布在我的博客上
过去几周我一直在找工作。可惜的是,我之前就职的那家初创公司最终没能成功。我真的很郁闷,但有时候事情就是这样。总之,我在推特上发了帖子说我正在四处寻找工作,然后有个朋友主动提出帮我做一次模拟面试。
简而言之,他确实嘲笑了我。
我很庆幸我们这么做了,因为说实话,我从来没有在这样的面试中被问到过技术问题。我当时压力太大了,崩溃了。我不是不知道怎么反转列表,而是想不起怎么按需操作了。
所以我一直在复习一些 JavaScript 的基础概念,因为记住它们的作用和用法对我很有好处,不用每次都去查。昨天我在推特上发了这段代码,感觉对大家很有帮助,所以这里再稍微解释一下。
数组.map()
map() 方法通过对调用数组中的每个元素调用提供的函数来创建一个新数组。
你有一个数组,需要对每个元素进行一些操作。这就是 map 的用途!
let numbers = [1,2,3,4,5]
numbers = numbers.map(numb=> numb+1)
console.log(numbers)
// will be [2,3,4,5,6]
对我来说,最初最大的障碍是意识到这numb
完全是编造的。你可以随便叫它什么。通常的做法是将 称为数组中包含内容的复数形式,将每次计算称为单数形式。array
说实话,我forEach()
之前.map()
用 ...let numbersPlusOne = numbers.map(numb=> numb+1)
数组.filter()
filter() 方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。
这里的主要区别在于,无论你传递什么条件,都会返回一个包含所有符合该条件的元素的变异数组。
例如:
let numbers = [1,2,3,4,5]
numbers = numbers.filter(numb=> numb % 2 == 0)
console.log(numbers)
// will be [2,4]
无论您传递什么条件,都会检查数组中的每个项目,并将其添加到新数组中并返回。
数组.reduce()
reduce() 方法对数组的每个元素执行一个 reducer 函数(由您提供),从而生成单个输出值。
这个稍微复杂一点,因为参数更多。不过最简单的形式是,你可以取一个数组,对每个元素执行相同的函数,返回一个值。回到我们的 numbers 数组
let numbers = [1,2,3,4,5]
numbers.reduce( (accumulator, currentValue) => accumulator + currentValue )
console.log(numbers)
// 15
请记住,你所做的计算将针对数组中的每个项目进行,并且accumulator
是累计总数。在 之后(箭头函数之前),currentIndex
和还有一些可选参数,但我在这里就不赘述了。array
currentValue
希望这有帮助!
文章来源:https://dev.to/pickleat/map-filter-and-reduce-2efb