【问题标题】:Javascript looping through an objectJavascript循环遍历对象
【发布时间】:2019-09-25 22:00:24
【问题描述】:

我有一个通过我的 REST API 返回的对象,我需要遍历它以同步数据库。因此该对象包含另一个称为表的对象。表对象具有不同的数组,其中包含表名及其键值对。 无论我做什么,我都无法在大约两天内循环遍历表对象,而且返回 null 或 undefined 值真的很烦人。

例如,我尝试使用 JavaScript 函数 object.forEach((article)=>console.log(article.id,article.name)); 迭代表数组;

const obj = response.content.tables.article;

function findArticles(obj) {
    obj.forEach((article)=>console.log(article.id,article.name));

}

我无法收回任何价值。当我尝试 console.log(response.content);它向我展示了一切。一旦我尝试输出 response.content.tables,它就会显示未定义。

这是对象的结构response.content:

{
    "status": "1",
    "message": "sync out request successfull",
    "tables": {
        "article": [
          {
          "id": 1,
          "name": "baseball"
          },
          {
          "id": 2,
          "name": "truck"
          },
        ],
        "food": [],
        "animals: []
    }
}

【问题讨论】:

  • 先尝试解析响应。还要注意“animals”属性后缺少的双引号。 var xyz = '{ "status": "1", "message": "sync out request successfull", "tables": { "article": [{"id": 1,"name": "baseball"},{"id": 2,"name": "truck"}],"food": [],"animals": []}}' console.log(JSON.parse(xyz));

标签: arrays loops object


【解决方案1】:

在尝试获取属性之前,尝试使用 JSON.parse(xyz) 将响应转换为对象。

var xyz = '{    "status": "1",  "message": "sync out request successfull",  "tables": {     "article": [{"id": 1,"name": "baseball"},{"id": 2,"name": "truck"}],"food": [],"animals": []}}'

var obj = JSON.parse(xyz);
$(obj.tables).each(function (ix, el) {
    console.log(el)
});

【讨论】:

  • 我没有得到任何输出。我使用控制台获得输出的唯一方法是 var contentResponse = JSON.parse(response.content);控制台日志(内容响应)。当我像 response.content.tables 那样深入时,什么都没有显示。除了我尝试运行您编写的确切代码之外,它不会在控制台上记录任何内容。这真的很奇怪。
  • 我同意,这很奇怪。运行这个小提琴并检查 F12 调试控制台。我希望它能有所启发:jsfiddle.net/knrd2ocq
【解决方案2】:

我是这样解决的:

var obj = response.content;
var JSON = JSON.parse(obj);
var articleTable = JSON.tables.article;

articleTable.forEach((article)=>console.log(article.id,article.name));

在我将 response.content 对象解析为 JSON 后,它可以作为“表”和“文章”访问嵌套对象。在将带有 articleTable 变量的文章对象传递给 forEach 之后,就可以访问每个元素了。现在我得到了结果。

非常感谢您的帮助 T3.0 没有你解决不了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-14
    • 2013-03-09
    • 2015-09-16
    • 1970-01-01
    • 2016-07-08
    • 2015-10-15
    • 2011-04-18
    相关资源
    最近更新 更多