如何从JSON创建数组?

时间:2014-12-17 10:44:55

标签: javascript json

无法想到更好的头衔。 重要的是要注意:我是js的新手,我猜它是我无法自己解决的原因。

我有一个从数据库返回的JSON数组,JSON数组代表一组点。 JSON数组的示例:

var JSON_array = [{lat:1,lng:2}, {lat:1,lng:3},{lat:2,lng:3}...]

我想创建一个不同的数组,其元素将是一个函数,函数的变量将是JSON数组中的元素,如下所示:

var coordinates = [
new google.maps.LatLng(1, 2),
new google.maps.LatLng(1, 3),
new google.maps.LatLng(2, 3),
....
];

我使用forEach创建了一个函数来计算JSON数组的元素(用于学习并尝试找到我想要的方法)但是我想不出一种方法来制作上面提到的数组。

4 个答案:

答案 0 :(得分:3)

您可以使用数组map方法:

var coordinates = JSON_array.map(function(coordinate) {
    return new google.maps.LatLng(coordinate.lat, coordinate.lng);
})

这个方法为你提供了一个基于(1)原始数组的新数组,以及(2)你如何处理每个元素。这里有更详细的doc方法。

答案 1 :(得分:3)

你也可以使用常规循环

coordinates = [];
for(var i=0;i<JSON_array.length;i++){
    coordinates.push(new google.maps.LatLng(JSON_array[i].lat,JSON_array[i].lng));
}

答案 2 :(得分:2)

对于将元素从一个数组映射到另一个数组,您可以使用Array.prototype.map函数,如

var JSON_array = [{lat:1,lng:2}, {lat:1,lng:3},{lat:2,lng:3}...];
var coordinates = JSON_array.map(function(el){ return new google.maps.LatLng(el.lat, el.lng)});

答案 3 :(得分:1)

正如Grundy所说,你可以做到:

coordinates = JSON_array.map(function(x) {
                                 return new google.maps.LatLng(x.lat, x.lng);
                             });

你可能希望直截了当,这与JSON无关。