在javascript对象中获取N对象?

在javascript对象中获取N对象?,javascript,Javascript,在对象中,例如: var a = {"a":"value1", "b": "value2", "c":"value3"}; 如何在不知道元素名称的情况下获取对象中第二个元素的值?变量n3等的情况也一样…根据第4.3.3节和第12.6.4节,对象的属性没有顺序,因此没有第二个元素。这与数组的数字属性下标不同 如果要将特定顺序与键关联,最好的方法是将键本身存储在数组中,并通过不使用for…in的下标来访问它们 所有主要的浏览器实现都将按照添加属性的顺序迭代这些属性。虽然这是不明智的,但您可能会侥幸

在对象中,例如:

var a = {"a":"value1", "b": "value2", "c":"value3"};
如何在不知道元素名称的情况下获取对象中第二个元素的值?变量n3等的情况也一样…

根据第4.3.3节和第12.6.4节,对象的属性没有顺序,因此没有第二个元素。这与数组的数字属性下标不同

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

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

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

获取第二个元素值。请注意,这取决于执行的意外情况,并不能保证在任何地方都有效。基本上,如果您这样做,这是一个等待发生的意外。

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

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

var theThirdForAnyValueOfThird = a[Object.keys(a)[2]];

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

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

有关于不同浏览器实现的顺序或缺少的参考吗?@pst-请参阅John Resig文章中的循环顺序部分。我首先在google中找到了这一点:,它指出,在这种情况下,键不能解析为32位integerInteresting+1。。从未考虑过插入顺序的实现是常见的,但希望有更多的引用。有些人仍然需要在IE6和其他古老的浏览器中工作。此外,IE10还使用了一个新的脚本引擎:-/顺便说一句,数组属性没有顺序,或者数组是对象。订单是通过使用索引访问它们来创建的。在某些情况下,在某些浏览器中使用for..in会使它们返回到无序状态。