flatMap
在集合上非常有用,但 javascript 在拥有 Array.prototype.map
时不提供。为什么?
有没有什么方法可以在javascript中以简单有效的方式模拟 flatMap
而无需手动定义 flatMap
?
原文由 Sergey Alaev 发布,翻译遵循 CC BY-SA 4.0 许可协议
flatMap
在集合上非常有用,但 javascript 在拥有 Array.prototype.map
时不提供。为什么?
有没有什么方法可以在javascript中以简单有效的方式模拟 flatMap
而无需手动定义 flatMap
?
原文由 Sergey Alaev 发布,翻译遵循 CC BY-SA 4.0 许可协议
flatMap
已被 TC39 批准为 ES2019 (ES10) 的一部分。你可以像这样使用它:
[1, 3].flatMap(x => [x, x + 1]) // > [1, 2, 3, 4]
这是我自己实现的方法:
const flatMap = (f, arr) => arr.reduce((x, y) => [...x, ...f(y)], [])
原文由 Kutyel 发布,翻译遵循 CC BY-SA 4.0 许可协议
13 回答13k 阅读
7 回答2.2k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
6 回答1.1k 阅读
更新:
Array.prototype.flatMap
进入ES2019它在许多环境中得到广泛支持。使用下面的代码片段查看它是否适用于您的浏览器 -
“为什么 javascript 中没有 Array.prototype.flatMap?”
因为编程并不神奇,而且每种语言都没有其他语言所具有的特性/原语。重要的是 JavaScript 让你能够自己定义它——
或者将两个循环合并为一个的重写 -
如果你想让它扩展
Array.prototype
,没有什么能阻止你 -