首页 > 解决方案 > reduce 可以做 map 做的所有事情吗?

问题描述

我在接受采访时被问到如何使用 JavaScript(一种数组操作)来做到这一点,我说我们可以使用reduce,但面试官说不,我们应该使用map,但我有点确定reduce可以做任何事情filtermap正在做的事情。我是对还是错?

抱歉,我无法重现我被问到的问题,但我在这里问的是 JavaScript 中一般的缩减技术......

标签: javascriptfilterfunctional-programmingreduce

解决方案


答案是:绝对可以!

实际上,Reduce 可以做任何可以通过单次迭代完成的事情。

筛选:

myArray.reduce(
    (result, item) => [...result, ...(myCallback(item) ? [item] : [])],
    []
)

地图:

myArray.reduce(
    (result, item) => [...result, myCallback(item)],
    []
)

话虽如此,如果您需要过滤项目,请使用filter(),如果您需要映射项目,请使用map().


推荐阅读