1

您如何通过对象在对象中的位置来识别对象。

myObj.b = 2 

我可以去myObj[1] to show 2 also吗?

var myObj = {
    a: 1,
    b: 2,
    c: 3,
    d: 4,
    e: 5,
    f: 6
}
4

2 回答 2

8

不,这是不可能的。对象属性没有位置,因为对象没有排序。

您必须选择:

  • 数组:范围内的连续键[0..length),按顺序排列。
  • 对象:任意键,无保证顺序。

一种可能的解决方法是创建一个对象和一个数组,然后将对象用于基于键的访问,将数组用于基于索引的访问。然后,您可以使用数组来获取给定值的索引。

于 2012-07-16T08:35:55.393 回答
2

不,myObj[1] 将导致未定义。对象文字是哈希映射(键、值存储),不支持基于索引的访问。之所以如此,是因为散列中的项目没有可预测的迭代顺序。

您可以做的是:(在 jQuery 中)

$.each(myObj, function(index, element) {
    console.log(index + ' : ' + element)
});

在纯 javascript 中,您可以使用 for in 循环遍历字段,如下所示:

for (key in myObj) {
   console.log(key);
   console.log(myObj[key]);
}

(注意:您的文字有语法错误)。

于 2012-07-16T08:39:12.303 回答