Имеет ли JavaScript буквенное обозначение карты?
Как и в ES6, JavaScript имеет собственный объект Map. Я не вижу способа использовать буквенную нотацию, хотя, как вы могли бы с массивом или объектом. Я пропустил его, или он не существует?
Массив: var arr = ["Foo", "Bar"];
Объект: var obj = { foo: "Foo", bar: "Bar" };
Карта:
Ответы
Ответ 1
Нет, ES6 не имеет буквенного обозначения для Map
или Set
s.
Вам нужно будет использовать их конструкторы, передавая итеративный (как правило, литерал массива):
var map = new Map([["foo", "Foo"], ["bar", "Bar"], …]);
var set = new Set(["Foo", "Bar", …]);
Есть несколько предложений по добавлению нового синтаксиса literal к языку, но ни один из них не попал в ES6 (и я лично не уверен, что они попадут в любую будущую версию).
Ответ 2
Это как HashMap - нет литерала. Вы должны определить его так же, как и конструктор.
Вы можете прочитать этот раздел, в котором обсуждаются литералы по карте, и почему они должны быть добавлены. Это в основном другие потенциальные предложения по картографическим литералам. Я лично не могу увидеть буквальный синтаксис в ES7, так как Maps очень прост в использовании, как есть, но в будущих предложениях может быть применен синтаксический сахар.
Был рассмотрен пример потенциальной литературной нотации с использованием октоторпа (хеш), чтобы выглядеть примерно так:
const myMap = Map#{expression("derp"): value("herp")};
Ответ 3
Есть способ сделать это, как мы делаем с литералами
const fruits = new Map(Object.entries({apples: 1, bananas: 2}))