JavaScript是否有Map字面符号?

时间:2016-02-26 14:37:15

标签: javascript ecmascript-6

从ES6开始,JavaScript有一个合适的Map对象。我没有看到使用文字符号的方法,就像使用数组或对象一样。我错过了,还是不存在?

数组:var arr = ["Foo", "Bar"];

对象:var obj = { foo: "Foo", bar: "Bar" };

地图:???

3 个答案:

答案 0 :(得分:35)

不,ES6没有MapSet s的文字表示法。

你必须使用它们的构造函数,传递一个iterable(通常是一个数组文字):

var map = new Map([["foo", "Foo"], ["bar", "Bar"], …]);

var set = new Set(["Foo", "Bar", …]);

有一些提议要为语言添加新的文字语法,但没有一个提交到ES6(我个人不相信他们会在未来的任何版本中使用它)。

答案 1 :(得分:6)

它就像一个HashMap - 没有文字版本。你必须像构造函数一样定义它。

您可以阅读this topic,其中讨论地图文字,以及为什么要添加它们。它基本上是关于Map文字的其他潜在提案。我个人不能预测ES7中的字面语法,因为地图很容易使用 - 但在将来的提案中可能会使用语法糖。

使用octothorp(散列)来讨论潜在文字符号的示例,如下所示:

const myMap = Map#{expression("derp"): value("herp")};

答案 2 :(得分:5)

有一种方法可以做到,就像我们使用文字一样

const fruits = new Map(Object.entries({apples: 1, bananas: 2}))