2011-03-25 105 views
32

在Python中我可以做类似myMap = {key: [value1, value2]},然后访问value2使用myMap[key][1]JavaScript的关联数组

我可以做在JavaScript这样的事情?

回答

41

嗯,你可以这样做:

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" 
+0

你声明的对象不是数组! – 2017-04-25 09:59:32

+0

@SuhaybKharabsheh ??对?当您想要非数字属性名称时,不应使用JavaScript数组(除非您有非常好的理由)。 – Pointy 2017-04-25 12:15:49

8

是,和语法几乎是相同的了。

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

您还可以使用下面的符号:

myMap.key[1] 
5

简短的回答...是...

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

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

这的确是。

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

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

查看jsFiddle

0

您可以使用地图这个例子:

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

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