0

在一个对象中,例如:

var a = {"a":"value1", "b": "value2", "c":"value3"};

如何在不知道元素名称的情况下获取对象中第二个元素的值?对于变量 n3 等也是如此......

4

3 回答 3

5

根据对象规范,对象属性没有定义的顺序。

如果你想有一天回来修复这个项目,你可以做一些愚蠢的事情,比如......

var theThirdForAnyValueOfThird = a[Object.keys(a)[2]];
于 2012-11-22T04:43:52.730 回答
2

根据语言规范(参见第 4.3.3 和 12.6.4 节),对象的属性没有顺序,因此没有“第二个元素”。这与数组的数值属性(下标)不同。

如果要将特定顺序与键相关联,最好的方法是将键本身存储在数组中并通过下标访问它们(不使用for...in)。

所有主要的浏览器实现都会按照添加的顺序迭代属性。虽然这是不明智的,但您可能能够逃脱:

a[Object.keys(a)[1]]

获取“第二个元素”值。请注意,这依赖于实施事故,并且不能保证在任何地方都有效。基本上,如果你这样做,这是一个等待发生的事故。

于 2012-11-22T04:43:33.870 回答
0

您不能也需要切换到数组。作为解决方法,我一直在做这样奇怪的事情:

var a = [{"a":"value1"}, {"b": "value2"}, {"c":"value3"}];
于 2012-11-22T04:51:24.987 回答