如何以数字方式访问Javascript对象的成员?

Avi*_*ian 1 javascript arrays json object

比方说,我有以下Javascript对象:

var Object = {
   Person_A: { name: 'James', age: 40, country: 'Spain' }, 
   Person_B : { name: 'Smith', age: 50, country: 'France' } 
}
Run Code Online (Sandbox Code Playgroud)

我想知道对象中有多少属性Object,并以数字方式访问这些属性,例如通过Object[n].

到目前为止(我不太使用Javascript对象,但在使用AJAX时我确实使用JSON作为返回格式)我不知道Javascript对象没有length方法,也无法以数字方式访问.

我试图将Javascript对象转换为在进行AJAX调用时返回的相同类型的JSON(JSON作为具有长度方法的对象返回,并且在数字上可访问 - 只需读取另一个线程,也许我就是'我错了 - 现在仔细检查)使用JSON.parse(JSON.stringify(Object))但只是返回相同的确切对象.

所以,我的问题是,采用像示例这样的对象的最有效方法是什么,并使其可以在数字上访问并有一个length方法.

非常感谢任何帮助(请询问您是否需要澄清我的问题).

谢谢.

小智 5

这不能用意义来完成.JavaScript对象的属性没有固有的顺序1.

length属性是Arrays 的特殊成员.(数组只是具有特定[[原型]]的对象,并且理解如何神奇地更新length- 并且定义了一些其他内部规则 - 就是这样!)


更新评论:

如果索引是必需的,请使用数组:

var people = [
   { id: "Person_A", data: { name: 'James', age: 40, country: 'Spain' } },
   { id: "Person_B", data: { name: 'Smith', age: 50, country: 'France' } }
]

people[0].id // "Person_A"
Run Code Online (Sandbox Code Playgroud)

1 JSON" 只有在序列化为文本时才具有顺序" ,但实现(包括将其转换为JavaScript对象的实现)在没有关于顺序的访问[或假设]的情况下工作; 有对性能没有订单保证每JSON标准.仅仅因为对象中的属性"看起来"在JSON(或JS对象文字)中排序,并不意味着订单.