簡體   English   中英

返回對象的一個​​元素並創建此元素的新數組

[英]Returning one element of an object and creating a new array of this element

我有一個函數返回這樣的對象數組:

[ { 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 }return { coordinates: coordinates }對象的特定元素,但是我不確定如何將其處理為for循環。

您可以使用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]]

根據ES2015的評論,您可以使用ES2015表格:

let coordAr = coordsObj.map(o => o.coordinates)

而且,如果您確實需要在for循環中執行此操作(例如,較舊的瀏覽器支持,並且您不能/不會使用shim或lodash):

var coordinates = [];
var points = // your starting object

var len = points.length;
for(var i=0;i<len;i++{
   coordinates.push(points[i].coordinates);
}

是的,您可以引用一個對象鍵( 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);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM