繁体   English   中英

获取关联数组的键

[英]Get the key of an associative array

我目前正在使用 .each 获取一个数组:

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

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

我怎样才能轻松获得它?

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 的$.each可以处理这两种情况。 $.each的回调中,第一个参数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'
});
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循环而不是基于回调的迭代器(例如$.each迭代$.each

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM