在JavaScript中从JSON中提取具有特定名称的元素

时间:2013-11-13 08:55:12

标签: javascript json

我是JavaScript的新手,所以请原谅我对基础知识和适当词汇的无知。

我有一个对象列表,所有对象都包含特定信息/变量/元素(latitde和经度),我希望在单独的数组中包含这些信息。

 var data = [{
     "0": "44",
     "latitude": "44",
     "1": "11",
     "longitude": "11"
 }, {
     "0": "45",
     "latitude": "45",
     "1": "12",
     "longitude": "12"
 }, {
     "0": "46",
     "latitude": "46",
     "1": "13",
     "longitude": "13"
 }, {
     "0": "47",
     "latitude": "47",
     "1": "14",
     "longitude": "14"
 }];

我已经知道我可以轻松访问特定值:

data[1].latitude
data[1].longitude

但是我怎么把它们放在一起得到这样的东西呢? :

var latitude = [44, 45, 46, 47]
var longitude = [11, 12, 13, 14]

2 个答案:

答案 0 :(得分:2)

您可以循环遍历data数组的元素,并将所需的值添加到将保存结果的其他数组中:

var latitudes = [];
var longitudes = [];
for (var i = 0; i < data.length; i++) {
    latitudes.push(data[i].latitude);
    longitudes.push(data[i].longitude);
}

// at this stage the latitudes and longitudes arrays 
// will contain the desired values

同样在你的data数组中,纬度和经度是字符串,而在预期的数组中,你需要整数。因此,在将值添加到结果数组之前,您可能需要使用parseInt函数解析值。

latitudes.push(parseInt(data[i].latitude, 10));
longitudes.push(parseInt(data[i].longitude, 10));

或使用parseFloat函数,如果这些字符串可以表示十进制数字(对纬度和经度更为真实)。

答案 1 :(得分:1)

与@Darin Dimitrov非常相似,但使用数组的.map()

  

Array.prototype.map()创建一个新数组,其中包含调用提供的函数的结果   这个数组中的每个元素。

更新:应该是这样的

var lat = data.map( function(item) {
   return item.latitude;
});

var lon = data.map( function(item) {
   return item.longitude;
});

JSFiddle