我正在尝试将数组数据推送到对象testCities。但是我收到“未捕获的TypeError:无法读取未定义的属性'push'”。这是我尝试过的代码。
var testCities = {};
testCities.type = 'FeatureCollection';
var data = data.data,
len = data.length;
for (var j = 0; j < len; j++) {
let name = data[j].name_e + ', ' + data[j].province_e;
let testCitiesLatitude = data[j].lat_lng.split(',')[0];
let testCitiesLongitude = data[j].lat_lng.split(',')[1];
let s = {type: "Feature", properties: {name: name}, geometry: {type: 'Point', coordinates: [testCitiesLongitude, testCitiesLatitude]}}
testCities.features.push(s)
}
我需要这样的结果:
var testCities = {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"name": "Mo Chit"
},
"geometry": {
"type": "Point",
"coordinates": [
100.5538,
13.8023
]
}
},
{
"type": "Feature",
"properties": {
"name": "Ratchathewi"
},
"geometry": {
"type": "Point",
"coordinates": [
100.5383,
13.7649
]
}
}
]
}
答案 0 :(得分:4)
您不能插入对象来回答标题中的问题。仅放入数组。
因此,testCities.features必须是一个数组。添加一行这样对其进行初始化:
var testCities = {};
testCities.type = 'FeatureCollection';
testCities.features = [];
如果您查看预期的结果,则“功能”之后的第一个字符是一个开放的方括号(因此,功能必须是一个数组)。
答案 1 :(得分:0)
将功能属性初始化为 testCities ,例如:
testCities.features = [];
此语句后的功能将是一个空数组,您可以将任何对象压入其中。