Javascript遍历JSON对象数组可找到实例,但将其记录为未定义

时间:2018-10-25 17:56:32

标签: javascript arrays node.js json pug

我正在Pug模板中运行脚本。该脚本首先从MongoDB中读取JSON对象数组。使用for循环迭代字符串数组(data)以访问每个JSON对象(doc)。之后,我遍历每个对象的键/值对(col),其中有一个固定的数字(20)。

  var data = !{JSON.stringify(response.features)}

  for(var doc = 0; doc <= data.length; doc++)
    for(var col = 1; col <= 20; col++)
      console.log(data[doc[col]])

有8个对象,每个对象具有20个键/值对(列)。因此,我可以看到180个返回的undefined实例这一事实表明该代码运行正常,但是由于某种原因我无法访问或查看返回的数据?最终目的是生成一张表,其中每一行对应一个对象的键/值对。

数组格式:Array(8) [ {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…} ]

对象格式:Object { _id: "4598hs9h390b", name: "test feature", testValue: 3, … }

2 个答案:

答案 0 :(得分:1)

您正在尝试使用索引访问对象属性。您需要做的是在Object.keys()之类的键上使用迭代器。

尝试此操作以获取数据:

  var data = !{JSON.stringify(response.features)}

  for(var doc = 0; doc <= data.length; doc++)
    Object.keys(data[doc]).forEach(function(key,index) {
      console.log(data[doc][key])
  });

  var data = !{JSON.stringify(response.features)}

  for(var doc = 0; doc <= data.length; doc++) {
     for(var col of Object.keys(data[doc])) {
        console.log(data[doc][col])
     }
  }

答案 1 :(得分:0)

这是您的错误:

console.log(data[doc[col]])

应该是:

console.log(data[doc][col])