我如何在快递js中迭代对象。我从json文件中获取信息,但是一旦我做了一个循环,它就会说它没有定义。
我在这里缺少什么,我希望它列出来。虽然我将有一个名为前40的h2,它将列出Year.top2011.top40.id.top01中的所有对象
这里有任何帮助。
路由中的索引
lista = JSON.parse(data);
console.log(lista);
res.render('index', {
lista: lista
});
我在索引中的索引
<% JSON.parse(lista).forEach(function(item) { %>
<%- item.Year.top2011.top40.id.top01 %>
<% }; %>
我的json文件
{
"Year": {
"top2011": {
"top40": {
"id": {
"top01": {
"album_cover": "http://o.scdn.co/image/830a22646bc38f72df95ec98e3ab6bb19aa6074b",
"artist_namn": "Adele",
"song": "Rolling In The Deep",
"spotify": "http://open.spotify.com/track/7h8Ud480Fm4ReUVxgFF9ZX",
"youtube": "http://youtu.be/rYEDA3JcQqw"
},
"top02": {
"album_cover": "http://o.scdn.co/image/215c999786e8319a09b7af87a970c2bdb6747c92",
"artist_namn": "LMFAO",
"song": "Party Rock Anthem",
"spotify": "http://open.spotify.com/track/1CNJyTUh56oj3OCZOZ5way",
"youtube": "http://youtu.be/KQ6zr6kCPj8"
}
}
}
}
}
}
答案 0 :(得分:0)
lista
不再是JSON字符串,而是JS对象。这一行:JSON.parse(lista).forEach(function(item)
无效。您需要迭代lista
:lista.forEach(function(item) {})
答案 1 :(得分:0)
首先,结构可以改进:
·为什么不将top40条目存储在数组中?
此结构包含top40_entries,每个条目都是top40
键 数组中的对象
{"Year": {
"2011": {
"top40": [
{
"pos": "top01",
"album_cover": "http://o.scdn.co/image/830a22646bc38f72df95ec98e3ab6bb19aa6074b",
"artist_namn": "Adele",
"song": "Rolling In The Deep",
"spotify": "http://open.spotify.com/track/7h8Ud480Fm4ReUVxgFF9ZX",
"youtube": "http://youtu.be/rYEDA3JcQqw"
},
{
"pos": "top02",
"album_cover": "http://o.scdn.co/image/215c999786e8319a09b7af87a970c2bdb6747c92",
"artist_namn": "LMFAO",
"song": "Party Rock Anthem",
"spotify": "http://open.spotify.com/track/1CNJyTUh56oj3OCZOZ5way",
"youtube": "http://youtu.be/KQ6zr6kCPj8"
}
]
}
}}
我会使用for
循环(需要时):
var top40_2011 = lista.Year.2011.top40; //get the array
for(var i=0; i<top40_2011.length; i++){
/* Access the values using the keys : */
//console.log(top40_2011[i].pos);
//console.log(top40_2011[i].artist_namn);
//console.log(top40_2011[i].song);
}
注意:请记住,数组从0开始,因此top40将从[0]到[39];