返回对象的一个​​元素并创建此元素的新数组

时间:2016-04-02 14:00:47

标签: javascript arrays

我有一个函数返回一个像这样的对象数组:

[ { 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循环。

3 个答案:

答案 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);
});