【问题标题】:How to access array within associative array in jquery如何在jquery中访问关联数组中的数组
【发布时间】:2020-10-29 04:44:28
【问题描述】:

我正在从远程服务器以关联数组格式检索 JSON 数据。关联数组的结构是:

data=
{
"1":[{"project_id":1,"project":"IET1"},{"project_id":2,"project":"IET2"}],
"2":[{"project_id":3,"project":"IET3"}],
"3":[{"project_id":4,"project":"IET4"},{"project_id":5,"project":"IET5"}]
}

这是我从 ajax 响应中得到的确切格式。现在,当我尝试使用以下方式遍历它时:

var obj = JSON.parse(data, function (key, value) {
  alert(key + " " + value) // will alert => "project_id 1"
}

我正在尝试使用主索引(“1”、“2”等)进行迭代。 我怎样才能做到这一点?我搜索了很多,但没有找到任何解决方案。

【问题讨论】:

    标签: javascript html jquery css frontend


    【解决方案1】:

    使用 Object.keys 可能会对您有所帮助。这是一个嵌套循环.. 但有效

    let data = `{
        "1":[{"project_id":1,"project":"IET1"},{"project_id":2,"project":"IET2"}],
        "2":[{"project_id":3,"project":"IET3"}],
        "3":[{"project_id":4,"project":"IET4"},{"project_id":5,"project":"IET5"}]
    }`;
    
    data = JSON.parse(data)
    const keys = Object.keys(data);
    
    keys.forEach(key => data[key].forEach(project => console.log(project.project_id + " - " + project.project)));
    

    【讨论】:

      【解决方案2】:

      不要在JSON.parse() 中使用“reviver”回调函数——它用于在解析数据时对其进行转换。

      只需解析它。然后您可以根据需要检索密钥或使用for in 循环对其进行迭代。

      let data = `{
      "1":[{"project_id":1,"project":"IET1"},{"project_id":2,"project":"IET2"}],
      "2":[{"project_id":3,"project":"IET3"}],
      "3":[{"project_id":4,"project":"IET4"},{"project_id":5,"project":"IET5"}]
      }`;
      
      const out = JSON.parse(data);
      
      const keys = Object.keys(out);
      
      for (key in out) {
        alert(out[key][0].project);
        console.log(key, out[key]);
      }

      【讨论】:

      • 我想多问一件事,如何在警报中获取 project_id、项目等?
      猜你喜欢
      • 2017-09-16
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多