如何遍历此Javascript对象?

时间:2012-08-31 18:12:47

标签: javascript json node.js

  

可能重复:
  How do I enumerate the properties of a javascript object?

{ 
       347655082: {
                    album:{
                            title: "A",
                            genre: "Pop",
                          }
        },

        347655083: {

                    album:{
                            title: "B",
                            genre: "Rock", 
                          }
        }
}

通常“外部”键是相同的,因此我可以轻松地定位嵌套对象。 在“外部”键是可变的情况下,可以是任何东西。

albums = JSON.parse(json); //parse json storing it in albums

我不能在专辑上运行foreach,说“专辑没有方法预告”。

albums.forEach(function(album, i){


}

3 个答案:

答案 0 :(得分:4)

您只能在数组上使用.forEach()。您的albums实体是Object,因此您应该使用for ... in ...)

for (var key in albums) {
    if (albums.hasOwnProperty(key)) {
        // do something with albums[key]
        ...
    }
}

对于目标node.js或任何其他ES5实现的代码,您可能会省略if子句 - 只有在您将代码添加到Object.prototype时,才需要它。

答案 1 :(得分:1)

ES5为迭代对象拥有的可枚举属性提供了一个很好的方法 - Object.keys(obj)。 我更喜欢以下迭代方法:

Object.keys(albums).forEach(function (key) {
   console.log(albums[key]);
});

答案 2 :(得分:-1)

这不是有效的json 有效的json将是: -

    {
    "347655082": {
        "album": {
            "genre": "Pop", 
            "title": "A"
        }
    }, 
    "347655083": {
        "album": {
            "genre": "Rock", 
            "title": "B"
        }
    }
}

json中的键需要双引号,如图所示。

验证json checkout jsonlint.com