Javascript中的关联数组?
目前,我正在使用以下方法在js中创建3d阵列:Javascript中的关联数组?,javascript,Javascript,目前,我正在使用以下方法在js中创建3d阵列: var arr = [["name1", "place1", "data1"], ["name2", "place2", "data2"], ["name3", "place3", "data3"]]; 我可以使用arr[0]或arr[1]访问每个元素。但是,我是否可以使用这样的密钥访问它们:arr[“name1”]应该给我第一个。有什么建议吗?我想我正在寻找一种类似Hashmap的功能。唯一可以做到这一点
var arr = [["name1", "place1", "data1"],
["name2", "place2", "data2"],
["name3", "place3", "data3"]];
我可以使用arr[0]或arr[1]访问每个元素。但是,我是否可以使用这样的密钥访问它们:arr[“name1”]应该给我第一个。有什么建议吗?我想我正在寻找一种类似Hashmap的功能。唯一可以做到这一点的方法是将它包装到一个对象中
var arr = {
name1 : ["name1", "place1", "data1"],
name2 : ["name2", "place2", "data2"],
name3 : ["name3", "place3", "data3"]
};
Javascript是一种基于原型的动态语言。您可以根据需要创建对象并更改其结构
var o = {name1: {place1: data1}, name2: {place2: data2}};
并通过以下方式访问:
o.name1
但是,查找实现是不同的,当您有很多经常更改的属性时,这可能会非常慢(除了在Chrome中,它使用一种特殊的方案来访问对象属性,即smalltalk中的嵌入式类a-la-dynamic dispatch)。一些库(如MooTools)提供了一些与哈希映射相关的结构,自提出此问题以来的六年中,情况发生了变化。 由于弱类型,可以在JavaScript中伪造关联数组:
>> var names = new Array();
undefined
>> names["first"] = "Dotan";
"Dotan"
>> names["last"] = "Cohen";
"Cohen"
>> for ( key in names ) { console.log(key+" "+names[key]) }
undefined
first Dotan
last Cohen
这是有时有用的,自2012年以来发布的所有浏览器都支持它,但是有一些警告!数组不能简单地读回:
>> names
Array [ ]
更重要的是,数组的长度无法轻松检索:
>> names.length
0
因此,这不是一个JavaScript支持的关联数组,而是一个在实际JS对象因任何原因不支持您需要的内容时经常有用的变通方法:
>> var names = {};
undefined
>> names.first = "Dotan";
"Dotan"
>> names.last = "Cohen";
"Cohen"
>> for ( key in names ) { console.log(key+" "+names[key]) }
undefined
first Dotan
last Cohen
>> names
Object { first: "Dotan", last: "Cohen" }
>> Object.keys(names).length
2
@传奇-别忘了接受答案。这将确保你在未来不断得到高质量的答案。另外,它让我看起来很好。:)当然接受答案有15分钟的时间限制:)因此,在本例中,要访问place1,您是否可以使用
o.name1.place1
?那会给你什么?值place1
或值data1
?