【问题标题】:iterate over nested objects in express在 express 中迭代嵌套对象
【发布时间】:2016-05-30 17:02:34
【问题描述】:

我想知道如何在 express js 中迭代对象。我可以从 json 文件中获取信息,但是一旦我执行循环,它就会一直说它没有定义。

我在这里缺少什么,我希望它列出它们。尽管我将有一个名为 top 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"
      }
    }
  }
}
  }
}

【问题讨论】:

  • 你最后管理了吗?你试过下划线_.each()吗?

标签: javascript json node.js express ejs


【解决方案1】:

lista 不再是 JSON 字符串,而是 JS 对象。此行:JSON.parse(lista).forEach(function(item) 将不起作用。您需要迭代 lista 而不是:lista.forEach(function(item) {})

【讨论】:

  • 它仍然说“lista”不是函数
【解决方案2】:

首先结构可以改进: ·为什么不将top40项存储在一个数组中?
此结构包含 top40_entries,每个作为 top40 内的对象 key array

{"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];

【讨论】:

  • Okej,我非常喜欢 json 结构(会使用它),但我在 index.js 视图中添加了 for 循环代码(我使用了 express 生成器)。我很难理解这一点。在我的脑海中,“lista”是一个我可以迭代的对象,但是当我像往常一样对对象进行迭代时,我就无法工作了。快没毛了
  • @CyrusZei 您是否尝试过 console.log() 来检查您的客户端浏览器?我会使用与您的视图交互的 jQuery 脚本来加载从 JSON 加载的动态 html 内容
猜你喜欢
  • 2021-05-19
  • 2022-11-15
  • 1970-01-01
  • 2018-03-08
  • 2023-03-21
  • 1970-01-01
  • 2022-12-20
  • 2020-05-04
  • 1970-01-01
相关资源
最近更新 更多