![](/img/trans.png)
[英]Returning the value of one element of an object in an array of objects in Vue
[英]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.