无法将数据推送到对象

时间:2018-08-02 03:49:54

标签: javascript

我正在尝试将数组数据推送到对象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
          ]
        }
      }
    ]
  }

2 个答案:

答案 0 :(得分:4)

您不能插入对象来回答标题中的问题。仅放入数组。

因此,testCities.features必须是一个数组。添加一行这样对其进行初始化:

var testCities = {};
testCities.type = 'FeatureCollection';
testCities.features = [];

如果您查看预期的结果,则“功能”之后的第一个字符是一个开放的括号(因此,功能必须是一个数组)。

答案 1 :(得分:0)

功能属性初始化为 testCities ,例如:

testCities.features = [];

此语句后的功能将是一个空数组,您可以将任何对象压入其中。