javascript Ассоциированный массив - PullRequest
32 голосов
/ 25 марта 2011

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

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

Ответы [ 5 ]

42 голосов
/ 25 марта 2011

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

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

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

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

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

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

console.log(myMap["function"]); // "hello world"
9 голосов
/ 25 марта 2011

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

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

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

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

8 голосов
/ 25 марта 2011

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

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

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

myMap.key[1]
5 голосов
/ 25 марта 2011

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

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

alert(m.Foo[0]);
alert(m["Foo"][1]);
0 голосов
/ 23 января 2018

Вы можете использовать карту:

var myMap = new Map(); 
myMap.set('key','Value'); 
var res = myMap.get('key'); 

console.log(var); // Result is: 'Value'
...