我目前正在从事一个需要使用美国人口普查局API的项目。我的大部分代码都在项目的一部分上工作,但是,我有一个我不理解的小问题。我想做的是获取一个113个对象,从每个对象中解析一个属性,然后将该属性(全部113个)放入一个数组中。就像我说的,我几乎可以执行我的代码了。以下是有效的方法:

   for (var i = 0; i <= response.features.length; i++){
      var dataPoint = response.features[i].properties.B19013_001E;
      console.log(dataPoint);
   }


上面的代码将打印出我需要到控制台的所有113个点。 (对于那些好奇的人,B19013_001E是家庭收入的中位数,这是我想要的县内基本上113个不同“区域”的数据。)
现在,代码可以实现我想要的功能,但是现在当我创建数组部分时:

   var dataArray = [];

   for (var i = 0; i <= response.features.length; i++){
      var dataPoint = response.features[i].properties.B19013_001E;
      dataArray.push(dataPoint);
   }

   console.log(dataArray);


当我控制台记录阵列时,我只会收到以下错误消息:
play.js:93未捕获的TypeError:无法读取未定义的属性'properties'

我不明白的是,我怎么能将我需要的所有113个积分全部分配到控制台,但是将它们放入阵列时出现问题?我想到的一件事是也许其中的一点不存在?但是,当我查看113点的控制台记录时,没有得到null或undefined的信息。任何帮助将是巨大的,谢谢!

最佳答案

您应该使用Array.map

var dataArray = response.features.map(function(feature) {
   return feature.properties.B19013_001E;
})


之所以会出现此错误,是因为<=将最后一次迭代置于数据收集范围之外。您可以将其更改为<

关于javascript - Javascript解析对象数据导致数组问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39417025/

10-09 18:40