Javascript 获取关联数组的键

Javascript 获取关联数组的键,javascript,jquery,arrays,Javascript,Jquery,Arrays,我当前正在获取一个数组,每个数组都有: $.each(messages, function(key,message){ doStuff(); }); 但键是数组的索引,而不是关联键 我怎样才能容易地得到它 var data = { val1 : 'text1', val2 : 'text2', val3 : 'text3' }; $.each(data, function(key, value) { alert( "The key is '" + key + "

我当前正在获取一个数组,每个数组都有:

$.each(messages, function(key,message){ doStuff(); });

但键是数组的索引,而不是关联键

我怎样才能容易地得到它

var data = {
    val1 : 'text1',
    val2 : 'text2',
    val3 : 'text3'
};
$.each(data, function(key, value) {
    alert( "The key is '" + key + "' and the value is '" + value + "'" );
});
​
请参见

JavaScript没有PHP中的“关联数组”,而是对象。但是,对象可能具有与值对应的字符串键。数组是数值索引的值列表,因此,如果
key
是一个数字,则它必须是您正在使用的数组,而不是对象,因此您无法获取键,因为没有键

因此,您可能希望使用一个简单的
for
-循环而不是基于回调的迭代器(如
$)来迭代数组。每个

JavaScript都没有“关联数组”。它具有以下阵列:

[1, 2, 3, 4, 5]
和对象:

{a: 1, b: 2, c: 3, d: 4, e: 5}
数组没有“键”。它们有指数,指数从0开始计算

可以使用
[]
访问数组,也可以使用
[]
访问对象

例如:

var array = [1,2,3];
array[1] = 4;
console.log(array); // [1,4,3]

var obj = {};
obj.test = 16;
obj['123'] = 24;
console.log(obj); // {test: 16, 123: 24}
如果尝试使用字符串作为键而不是int来访问数组,则可能会导致问题。您将设置数组的属性,而不是值

var array = [1,2,3];
array['test'] = 4; // This doesn't set a value in the array
console.log(array); // [1,2,3]
console.log(array.test); // 4
jQuery的
$。每一个
都可以处理这两个问题。在
$的回调中。每个
,第一个参数
key
,要么是对象的键,要么是数组的索引

$.each([1, 2, 3, 4, 5], function(key, value){
    console.log(key); // Logs 0 1 2 3 4
});

$.each({a: 1, b: 2, c: 3, d: 4, e: 5}, function(key, value){
    console.log(key); // Logs 'a' 'b' 'c' 'd' 'e'
});

数组没有任何关联键。索引是关键。您想做什么?您的数组在哪里,即
消息
?您能提供一个示例数组(2-3个元素)和您期望的“关联键”吗?JavaScript没有关联数组。在JS中,您可以使用对象来模拟使用方括号表示法,但您正在添加属性。我相信你犯了一个常见的错误,比如:
var h=new Array();h['foo']='bar'
。但您没有添加新数组的元素,只是添加了一个名为“foo”的新属性。事实上,
alert(h.length)
将是
0
,并且
alert(h.foo)
将等于“bar”。“key是数组的索引,而不是关联键”。什么意思?数组没有“关联键”。您能告诉我们什么是
消息
,以及您需要什么值吗?