21

可能重复:
如何枚举 javascript 对象的属性?

如果我有这样的 javascript 对象:

data = {
    a : 2,
    b : 3
}

但是 a 和 b 是任意的,并在运行时决定。有没有办法在不知道密钥的情况下通过对象并访问所有属性?

4

2 回答 2

32
data = {
    a : 2,
    b : 3
}

for(var propName in data) {
    if(data.hasOwnProperty(propName)) {
        var propValue = data[propName];
        // do something with each element here
    }
}
于 2012-09-10T02:19:13.653 回答
3

首先,这不是 JS 中通常所说的 an Array,它通常被称为Object. Arrays 只包含值,即

arr = [1, 2, 3, 4]

Objects ('Associative arrays') 关联名称:值对。

要迭代 a 的值Object,请使用for...in

var object = { a: 'hello' }

for (var key in object) {
  if (object.hasOwnProperty(key)) {
    alert(key); // 'a'
    alert(object[key]); // 'hello'
  }
}   

hasOwnProperty很重要,以确保您只查看实际对象,而不是属于原型的属性。

于 2012-09-10T02:23:23.030 回答