我从现有数组(包含 100.000 个对象的大数组) 创建了一个新数组。在新数组中,我只需要“城市”值为例如纽约市的元素。
var newData = [];
for (var i = 0; i < data.length; i++) {
if(data[i].city === "New York City") {
newData[i] = {"city": data[i].city, "longitude":
data[i].longitude, "latitude": data[i].latitude, "state":
data[i].state};
}
}
我一定是做错了什么,因为新数组中的很多元素都是 null
......
新数组看起来像这样:
[null,null,null,null,null, {"city":"New York", "logitude":
-73.935242, "latitude": 40.730610, "state": "NY"},
null,null,null,null,null,null,"city":"New York", "logitude":
-73.935242, "latitude": 40.730610, "state": "NY"}]
我做错了什么?我怎样才能实现我的目标?
提前谢谢大家!
最佳答案
元素不会是null
,它们会缺失(当您尝试访问它们时显示为undefined
) .原因是你每次都在增加 i
,即使你跳过了一个条目。
要修复它,请改用push
:
var newData = [];
for (var i = 0; i < data.length; i++) {
if (data[i].city === "New York City") {
newData.push({
"city": data[i].city,
"longitude": data[i].longitude,
"latitude": data[i].latitude,
"state": data[i].state
});
}
}
如果您希望两个数组共享对象,您可以改用filter
:
var newData = data.filter(function(entry) {
return entry.city === "New York City";
});
但是如果您希望新数组包含与原始数组不同的新对象,您的for
循环就可以了。
关于javascript - 仅使用包含特定值的元素从现有数组创建新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44367124/