全文共2556字,预计学习时长8分钟
来源:Pexels
世间纷乱复杂,我们在不断给自身做“加法”的同时,也要学会对周围的事物做“减法”,将复杂的东西简化,为我所用,并发挥超出原本程度的增幅效果,这才是真正的“高手”。
在“码农圈”,学习如何使用.map()、.filter()和.reduce()函数,我们读到、看到和听到的一切都很复杂,无法理解这些概念,因为它们是独立的学习单元。
听说这些是意味着上升至启蒙状态的入门知识。真希望自己听到的是实话:早点明白这三种方法其实都是识别和实现过程,循环遍历迭代的原因通常属于三个功能类别之一。
回顾之前编写的代码,笔者发现95%的情况下,在对字符串或数组进行循环时,自己都会执行以下操作之一:将语句序列映射(map)到每个值,过滤(filter)满足特定条件的值,或者将数据集减少(reduce)到单个聚合值。
这是取得进步的关键时刻,Map、filter和reduce只需要执行其中的一个任务即可!
来源:Pexels
为了练习,笔者使用这些方法对旧代码进行重构,这真是帮了大忙!
言归正传,继续讲解学习内容。本文将解释每种方法,然后将常用 for循环的实现转换为这三个各自的方法。
Map
.map()方法使用在:1.用可迭代的每个值执行一组语句;2.返回(可能)修改值。
用一个简单的示例来计算一系列价格的营业税:
const prices = [19.99, 4.95, 25, 3.50];
let new_prices = [];for(let i=0; i < prices.length; i++) {
new_prices.push(prices[i] * 1.06);
}
用.map()方法可以得出同样的结果:
const prices= [19.