jQuery获取关联数组索引对应的键名

3
我的问题如下,在一个数组中:
    var array = new Array();
    array['abc'] = 'value1';
    array['def'] = 'value2';

如果我有数组的索引号,如何获取其关联键?比方说,我想要 arr[0] 的关联键(=> 'abc'),或者 arr[1] 的关联键(=> 'def')。在 jQuery 中怎么做呢?
请明确一点,我不是在寻找值,也不需要使用 $.each()。我只需要将 0 连接到 'abc',1 => 'def' 等等……不幸的是,像 arr[0].assoc_key() 这样的东西似乎不存在 T_T 非常感谢。

1
JavaScript 没有本地的字典类型,您需要自己编写。 - T McKeown
1
这是不可能的,而且jQuery根本没有涉及到。如果您像那样使用数组作为字典,那么您正在做错误的事情。 - Jon
1
重新考虑你的做法。也许尝试使用 array[0] = {key: 'abc', value: 'value1'} - Geezer68
在 JavaScript 中,arr['0'] 和 arr[0] 是相同的。没有从键中分离出来的单独索引。 - stark
没有与键分离的索引 - 谢谢,因为使用从1开始的键数组而苦恼了几个小时。真希望有可能...像Array.index()这样简单的东西就好了! - user3600150
3个回答

1
好的,解决方案非常简单,您需要创建一个对象,将索引与键以及键与值相关联。这里是一个可行的JSBin。请注意,要添加元素,您需要一个自定义函数(在这种情况下为addElement),以便在正确的位置同时关联索引和键。这只是一个初步的草稿,让您了解如何完成! JSBin 如果您有任何问题或者这不完全符合您的期望,请编辑您的问题,我会再次查看它。如果您想要所要求的行为,则必须使用自定义对象。

0
JavaScript没有本地的字典类型,需要自己编写。- T McKeown 这是不可能的,jQuery完全没有涉及。如果您像那样使用数组作为字典,则正在做错事情。- Jon 重新考虑您所做的方式。也许尝试array [0] = {key:'abc',value:'value1'}-Geezer68 @Geezer68,对象不支持多维数据,我正在处理的数组深度为3级(我知道我在原帖中没有这样说,但我认为这并不相关)。 无论如何,谢谢你们,这回答了我的问题!然后我会重新考虑一下;-) 编辑:我想我只会添加一个级别:
    var array = new Array();
    array[] = 'abc';
    array[0] = 'value1'

哦,还有谢谢Karl-André ^^ - Gingi

-1

除了使用 for ... in,我不知道其他的方法。所以这是我如何做的,希望你能得到更好的答案(因为我也想知道!)。

var array = new Array();
array['abc'] = 'value1';
array['def'] = 'value2';

var listKeys = [];
for(x in array) listKeys.push(x);

console.log(listKeys); // ['abc', 'def']

但是,在数组对象上使用[string]会向对象添加属性,而不是数组。因此最好以这种方式进行初始化:

var array = {};

您可以在这个问题中了解更多关于这种技术的信息,以及一些限制,为什么您不应该依赖它。


"for...in" 不保证顺序。理论上,您可以进行两次迭代,并从每次迭代中获得不同的结果。 - Jon
如果您插入另一个键,则索引将更改。 - stark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接