Подтвердить что ты не робот

Javascript Ассоциированный массив

В python я мог бы сделать что-то вроде myMap = {key: [value1, value2]}, а затем получить доступ к value2 с помощью myMap[key][1]

Можно ли сделать что-то подобное в javascript?

4b9b3361

Ответ 1

Ну, вы можете сделать это:

var myMap = { key: [ value1, value2 ] };
var array = myMap.key; // or myMap["key"]

JavaScript не имеет типа "ассоциативного массива", который сочетает поведение "map" с поведением массива, как отслеживание количества свойств. Таким образом, общая задача - использовать простой объект. В современном JavaScript сейчас (2017) существует явное средство Map, которое позволяет использовать ключи любого типа, а не только строки, как при использовании простых объектов.

JavaScript немного глупо относится к объектной нотации, поскольку он не позволит вам использовать зарезервированные слова для ключей, если вы их не процитируете:

var myMap = { 'function': 'hello world' };

Синтаксис цитаты позволяет использовать любую строку в качестве имени свойства. Чтобы получить доступ к таким свойствам, вы должны использовать оператор [ ]

console.log(myMap["function"]); // "hello world"

Ответ 2

Это действительно.

var myMap = {london: ['clapham', 'chelsea'], bristol:['clifton', 'redland']}

alert(myMap.london[0]);
alert(myMap['bristol'][1]);

См. этот пример на jsFiddle

Ответ 3

Да, и синтаксис почти такой же.

var myMap = {key: ["value1", "value2"]};
alert(myMap["key"][1]); // pops up an alert with the word "value2"

Вы также можете использовать следующие обозначения:

myMap.key[1]

Ответ 4

Короткий ответ... да...

var m = { Foo : ["Bar", "Baz"] };

alert(m.Foo[0]);
alert(m["Foo"][1]);