我目前正在开展一项项目,要求我使用美国人口普查局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:无法读取未定义的属性“属性”
我不明白的是为什么我可以将所有需要的113个点单独提供给控制台,但是当我将它们放入阵列时我遇到了问题?我想到的一件事是,可能其中一个点不存在?但是当我看到113点的控制台记录时,我什么都没有得到null或未定义。任何帮助都会很棒,谢谢!
答案 0 :(得分:4)
您应该使用Array.map
:
var dataArray = response.features.map(function(feature) {
return feature.properties.B19013_001E;
})
您收到该错误是因为<=
将最后一次迭代置于数据集合的边界之外。您可以将其更改为<