0

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

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

        347655083: {

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

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

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

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

albums.forEach(function(album, i){


}
4

3 回答 3

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

于 2012-08-31T18:20:18.763 回答
1

ES5 有一个很好的迭代对象自身可枚举属性的方法—— Object.keys(obj)。我更喜欢以下迭代方法:

Object.keys(albums).forEach(function (key) {
   console.log(albums[key]);
});
于 2012-08-31T19:23:25.627 回答
-1

那不是有效的 json 有效的 json 是:-

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

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

验证 json 结帐 jsonlint.com

于 2012-08-31T18:16:06.363 回答