迭代一系列对象?

时间:2016-07-08 09:28:41

标签: javascript jquery

以下是我从API获得的一些示例数据:

{
  "Document": {
    "Placemark": [
      {
        "name": " V5-MJW",
        "address": "Aviation Road, Windhoek, Namibia",
        "description": [],
        "TimeStamp": {
          "when": "2016-05-21T06:12:00-04:00"
        },
        "styleUrl": "#asset7541",
        "Point": {
          "coordinates": "17.0829055,-22.598271,743"
         }
      },
      {
        "name": "GSatMicro80149",
        "address": "Unnamed Road, Lesotho",
        "description": [],
        "TimeStamp": {
          "when": "2016-05-11T04:52:00-04:00"
        },
        "styleUrl": "#asset7543",
        "Point": {
          "coordinates": "27.5594894,-29.456703,1659"
         }
      }
    ]
  }
}

这是我当前创建数组的代码:

var flightPlanCoordinates = [];

//data being the returned values from the API.
$.each(data.Document.Placemark, function () {

    var location = this.Point.coordinates.split(',');
    var loc = {lat: parseFloat(location[1]), lng: parseFloat(location[0])};

    flightPlanCoordinates[this.name] == null ? flightPlanCoordinates[this.name] = [] : flightPlanCoordinates[this.name].push(loc);
});

我得到了很多具有相同名称的地标,我想用不同的名称将每个地标拆分成不同的数组。

这一切正常,直到我尝试对flightPlanCoordinates进行迭代,我尝试了以下内容:

$.each(flightPlanCoordinates, function(index) { 

}

但这不起作用,如果我记录flightPlanCoordinates的长度,则结果为0,但在Firefox Dev工具中,我可以在flightPlanCoordinates内看到正确的值。

我该怎么做呢?有没有比我在这里做的更好的方式?

1 个答案:

答案 0 :(得分:2)

请更改

var flightPlanCoordinates = [];

var flightPlanCoordinates = {};

它应该是一个对象,因为你用flightPlanCoordinates[this.name]之类的属性设置它,其中this.name是一个字符串,而不是一个索引。