首页 > 解决方案 > 抽象是使用不会改变原始数据并返回新数组的 Javascript 数组方法的一个因素吗?

问题描述

如果我错了,请纠正我:.map()、.filter() 的主要好处是它们执行的功能是它们提供抽象层的事实吗?返回具有选定数据位的新数组而不改变原始数组似乎是运动中的抽象。

标签: javascriptarraysmethodsabstraction

解决方案


事实上,map 函数借鉴了函数范式原则 ( https://en.wikipedia.org/wiki/Functional_programming ) 的起源。在这种编程愿景中,我们倾向于使用“纯函数”,即不会改变其任何参数的函数。

所以,它不是真正的抽象,而是一种选择:

  • 你想改变你的论点吗?实时更改阵列
  • 您想要数据的转换副本吗?使用地图

在某些情况下,您不想更改原始数据,因此默认情况下 map 可能是合适的。

在其他一些情况下,您可以选择。使用 map 的优点是减少了副作用的可能性(例如:应用程序的其他部分共享相同的数组,并且不期望更改),但以复制数据为代价。

所以,没有一个比另一个更好,这真的取决于你想做什么。


推荐阅读