我有一个函数返回一个像这样的对象数组:
[ { type: 'Point', coordinates: [ 53.43887641, -2.26581926 ] },
{ type: 'Point', coordinates: [ 53.260671, -2.12337785 ] },
{ type: 'Point', coordinates: [ 53.44815087, -2.22897913 ] },
//more of the same...
我的问题是如何只返回坐标并创建一个只包含坐标的新数组,以便它看起来像这样:
[[ 53.43887641, -2.26581926 ],
[ 53.260671, -2.12337785 ],
[ 53.44815087, -2.22897913 ],
// more of the same ...
我相信您可以通过return { coordinates: coordinates }
返回对象的特定元素,但我不确定如何将其用于for循环。
答案 0 :(得分:2)
您可以使用Array.prototype.map
功能:
var coordsObj = [{
type: 'Point',
coordinates: [53.43887641, -2.26581926]
}, {
type: 'Point',
coordinates: [53.260671, -2.12337785]
}, {
type: 'Point',
coordinates: [53.44815087, -2.22897913]
}]
var coordAr = coordsObj.map(function(o) {
return o.coordinates;
})
console.log(coordAr) // [[53.43887641, -2.26581926], [53.260671, -2.12337785], [53.44815087, -2.22897913]]
根据@Tushar的评论,您可以使用ES2015
表格:
let coordAr = coordsObj.map(o => o.coordinates)
答案 1 :(得分:0)
如果您确实需要在for循环中执行此操作(例如,较旧的浏览器支持,您不能/不会使用垫片或lodash):
var coordinates = [];
var points = // your starting object
var len = points.length;
for(var i=0;i<len;i++{
coordinates.push(points[i].coordinates);
}
答案 2 :(得分:0)
是的,你可以引用一个对象键(coordinates
)来获取它的值([58.999,67.222]
),但由于你有一个对象数组,你需要循环它们到得到每组坐标:
var coordinate_array = [];
for (var i=0; i < object_arr.length; i ++) {
coordinate_array.push(object_arr[i]['coordinates']);
// Can also do: coordinate_array.push(object_arr[i].coordinates);
}
在上面的代码中,object_arr
是您的对象数组,object_arr[i]
是数组中的单个对象。
如果你正在使用jQuery,你可以这样做:
var coordinate_array = [];
$.each(object_arr, function(object) {
coordinate_array.push(object.coordinates);
});