Javascript有关联数组吗?
Javascript有关联数组吗?请解释。JavaScript中类似的东西是对象Javascript有关联数组吗?,javascript,Javascript,Javascript有关联数组吗?请解释。JavaScript中类似的东西是对象 var my_obj = { key : 'value' } 我们拥有的最接近的东西是一个物体;定义它的最简单方法是使用对象文字语法 var assocArray = { key: 1, key2: 2 }; 但是,您应该注意以下几点: 它没有.length属性 您应该使用for in对其进行迭代,而不是使用for(;;),但应将其与hasOwnProperty()结合使用: 没有对成员进行排序
var my_obj = { key : 'value' }
我们拥有的最接近的东西是一个物体;定义它的最简单方法是使用对象文字语法
var assocArray = {
key: 1,
key2: 2
};
但是,您应该注意以下几点:
.length
属性for in
对其进行迭代,而不是使用for(;;)代码>,但应将其与hasOwnProperty()
结合使用:
没有;JavaScript数组只是数字键和混合值。同样的事情也可以通过对象实现(或者,实际上,它与其他语言中的关联数组完全相同):
var foo = {
a: 123,
b: 'CDE'
};
foo.a; // 123
foo['a']; // 123
您可以使用数组:
var foo = [];
foo.a = 123;
foo.b = 'CDE';
foo.b; // CDE
foo['b']; // CDE
但是,决不能这样做,因为这不会将键/值对输入到数组中,而是将它们作为属性添加到数组对象中。(此外,
{a:123}
比a=[];a.a=123
更容易)如果需要键/值对,请使用对象。如果需要枚举列表,请使用数组。而不是关联数组。Javascript有对象
<对象的代码>属性使用字符串寻址
var obj1 = {}; // declare empty object
var obj2 = {a: 1, b: 'string', c: [4,5]}; // obj with 3 properties, a, b, and c
// note that the 'c' property contains an anonymous array
alert(obj2.a); // shows 1
obj2.a = 'another string'; // redefine the 'a' property
obj2.cookie = 'oatmeal'; // add a new property to the object
obj2['ice_cream'] = {vendor: 'Beyers',
flavor: 'Chocolate Surprise'}; // add anonymous object as
// a new property for the object
assert(obj2.a === obj2['a']); // two ways to retrieve the value
var i = 'a'; // using an index varable
assert(obj2.a === obj2[i]); // note the i does not have apostrophes around it
请参见确定它是(某种类型,使用对象)
可通过
foo.bar
这个答案几乎是我以前的答案的复制粘贴 自从提出这个问题以来,五年来情况发生了变化。 由于弱类型,可以在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
不需要在}之后可能重复分号。我很好奇为什么您推荐枚举数组和映射对象。你能详细说明一下吗?
>> names.length
0
>> 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