无法想到更好的头衔。 重要的是要注意:我是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数组的元素(用于学习并尝试找到我想要的方法)但是我想不出一种方法来制作上面提到的数组。
答案 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无关。