可能重复:
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){
}
答案 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