我只是在研究ES2015,然后来到地图,集合和阵列。
首先,我对他们为什么都使用不同的方法向其添加项目感兴趣。
Set.add("item");
Map.set("item");
Array.push("item");
是否存在疯狂的方法,而不是将它们全部保留为.push
?
尺寸与长度。
为什么Map和Set得到.size
但是数组有.length
为什么不使用它?
你什么时候使用Map over Array?任何人都可以为此提供一个真实世界的例子,我知道你可以做一些事情,比如在地图中使用对象作为键,但为什么你会在第一时间这样做。
希望有人可以清除这一点,以帮助其他新手入手,感谢ES2015。
答案 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?