循环访问JSON数据并将对象组合到一个数组中

时间:2015-01-20 17:47:45

标签: ajax json loops

我从API获取JSON数据,需要在整个数据中循环以获得纬度和经度坐标。然后取出那些坐标并将它们存储在一个数组中。

这是我到目前为止所拥有的

 $.ajax({
    url: 'APIUrl',
    dataType:'json',
    success:function(locations) {

      console.log(locations);
      for (var i = 0; i < locations.results.length; i++) {
        var latitude = locations.results[i].geocode.lat;
        var longitude = locations.results[i].geocode.long;
        var name = locations.results[i].name;
        var coordinates = [{name: name, latitude: latitude, longitude: longitude, radius: 2}];
            bombMap.bubbles(coordinates, {
         popupTemplate: function (geo, data) { 
          return ['<div class="hoverinfo">' +  data.name, '</div>'].join('');
         }
          }); 
      }; 
    },
});

当我在console.log(coordinates);它将所有正确的数据输出为单个数组,但现在我需要将它们全部组合成一个数组。

我尝试了$ .merge和$ .extend没有运气。

JSON输出示例:

Object {results: Array[310], count: 310}
count: 310
results: Array[310]
[0 … 99]
0: Object
address: Object
bucket: "fair"
clientRefId: "53ecdf1a2000008307b96dbf"
description: ""
email: ""
errors: Array[4]
geocode: Object
accuracy: "Medium"
lat: 38.95376968383789
long: -77.44419860839844
__proto__: Object
1: Object

需要将名称和地理编码数据存储到变量中,如此

var = [{
  name:
  latitude:
  longitude: },{
  name:
  latitude:
  longitude: }
];

2 个答案:

答案 0 :(得分:2)

想出这个,并且很快就没注意到它。

    $.ajax({
    url: 'APIUrl',
    dataType:'json',
    success:function(locations) {
        var locals = [];
      for (var i = 0; i < locations.results.length; i++) {
        var latitude = locations.results[i].geocode.lat;
        var longitude = locations.results[i].geocode.long;
        var name = locations.results[i].name;
        var coordinates = {name: name, latitude: latitude, longitude: longitude, radius: 2};
        locals.push(coordinates); 
      }; 
      bombMap.bubbles(locals, {
       popupTemplate: function (geo, data) { 
        return ['<div class="hoverinfo">' +  data.name, '</div>'].join('');
       }
      });
    },
});

需要在for循环之外声明一个空数组,然后使用.push用坐标填充它。应该早点发现那个

答案 1 :(得分:0)

获得一个大阵列:

concatenatedCoordinates = coordinates.reduce(function(a, b){return a.concat(b);});

我希望我理解你的问题。