ES2015 - 集,地图和数组问题

时间:2016-09-09 12:59:14

标签: javascript arrays set ecmascript-6 maps

我只是在研究ES2015,然后来到地图,集合和阵列。

问题1

首先,我对他们为什么都使用不同的方法向其添加项目感兴趣。

  • Set.add("item");
  • Map.set("item");
  • Array.push("item");

是否存在疯狂的方法,而不是将它们全部保留为.push

问题2

尺寸与长度。

为什么Map和Set得到.size但是数组有.length为什么不使用它?

问题3

你什么时候使用Map over Array?任何人都可以为此提供一个真实世界的例子,我知道你可以做一些事情,比如在地图中使用对象作为键,但为什么你会在第一时间这样做。

希望有人可以清除这一点,以帮助其他新手入手,感谢ES2015。

1 个答案:

答案 0 :(得分:1)

集合,地图和数组使用不同的方法,因为这些方法做了不同的事情。 Array.prototype.push()将一个或多个元素添加到数组的末尾。 Set.prototype.add()的工作方式类似,但它只接受一个参数。如果它被命名为push(),有些人会认为它与数组方法的工作方式相同,并且他们会尝试set.push(1, 2, 3)并且他们会为什么只添加第一个元素而感到困惑。 / p>

Map.prototype.set()是完全不同的事情。来自MDN

  

set() 方法将具有指定键和值的元素添加或更新到Map对象。

如果已存在具有指定键的元素,则此方法不会向Map添加任何元素,而只会更新该元素的值。

你的第二个问题was answered on this blog

  

length用于序列,可索引的数据结构 - 如数组。 size适用于主要是无序的集合 - 例如地图和集合。

我真的不明白你的第三个问题。地图和数组是完全不同的数据结构。地图与对象类似,请参阅Maps vs Objects in ES6, When to use?