簡體   English   中英

如何在JavaScript中使用特定鍵將數組轉換為對象

[英]how convert array to object with specific key in javascript

我有一個下面格式的大數組

 [
    { 
      id: '1', 
      name: "bloh", 
      coordinates: [[51.3888562, 35.7474398], [51.388671,35.7470575],[51.3887346, 35.7470375]]
    },
    {
      id: '2', 
      name: "blohbloh",
      coordinates:  [[51.3888562, 35.7474398],[51.3822271, 35.7444575]]
    }
 ]

我想將所有元素的坐標屬性格式轉換為以下格式

{
   id: '1',
   name: "bloh",
   coordinates:[{longitude:51.3888562,latitude: 35.7474398},{longitude:51.3887346,latitude: 35.7470375}]
},

{
   id: '2', 
   name: "blohbloh", 
   coordinates:[{longitude:51.3888562,latitude: 35.7474398},{longitude:51.3822271,latitude: 35.7444575}]
}

您應該能夠使用map做到這一點:

 let input = [{id: '1', name: "bloh", coordinates: [[51.3888562, 35.7474398], [51.388671,35.7470575],[51.3887346, 35.7470375]]},{id: '2', name: "blohbloh",coordinates: [[51.3888562, 35.7474398],[51.3822271, 35.7444575]]}]; let result = input.map(({id, name, coordinates}) => { return { id, name, coordinates: coordinates.map(([latitude,longitude]) => { return { latitude, longitude}})}; }); console.log("Result: ", result); 

您可以遍歷數組,然后需要使用map將坐標的表示形式從數組更改為對象。

您可以使用以下代碼進行轉換。

var arr=[{id: '1', name: "bloh", coordinates:  [[51.3888562, 35.7474398], [51.388671,35.7470575],[51.3887346, 35.7470375]]},{id: '2', name: "blohbloh",coordinates: [ [51.3888562, 35.7474398],[51.3822271, 35.7444575]]}];
arr.forEach(elm=>elm.coordinates=elm.coordinates.map(c=>({longitude:c[0],latitude:c[1]})));
console.log(arr);

您可以使用兩個map()解構操作,以將rest對象的所有屬性復制到rest變量中,然后將map()的坐標轉換為另一種格式:

 const data = [{id: '1', name: "bloh", coordinates:[[51.3888562, 35.7474398], [51.388671,35.7470575],[51.3887346, 35.7470375]]},{id: '2', name: "blohbloh",coordinates:[[51.3888562, 35.7474398],[51.3822271, 35.7444575]]}]; const result = data.map(({ coordinates, ...rest }) => ({ ...rest, coordinates: coordinates.map(([longitude, latitude]) => ({ longitude, latitude })) }) ); console.log(result); 

在遇到任何類型的問題時,首先,您應該了解您需要做什么,而更漂亮的數據將始終幫助您實現這一目標。

您要轉換為:

const original = [{
  id: '1',
  name: "bloh",
  coordinates: [ [51.3888562, 35.7474398],
               [51.388671,35.7470575],
               [51.3887346, 35.7470375] ]
 },
 {
  id: '2',
  name: "blohbloh",
  coordinates:  [ [51.3888562, 35.7474398],
                [51.3822271, 35.7444575] ]
 }
]

對此:

{
  id: '1',
  name: "bloh",
  coordinates:[
    {longitude:51.3888562,latitude: 35.7474398},
    {longitude:51.3887346,latitude: 35.7470375}
   ]
},
{
  id: '2',
  name: "blohbloh",
  coordinates:[
    {longitude:51.3888562,latitude: 35.7474398},
    {longitude:51.3822271,latitude: 35.7444575}
   ]
}

我認為,我們將使用“ for”循環,因為它更容易看到正在發生的事情。

for(i in original){
  original[i].coordinates = original[i].coordinates.map(item => {return {
    latitude: item[0], 
    longitude: item[1]}
    })
}

console.log(JSON.stringify(original))

您可以使用修飾符以更漂亮的方式查看數據,例如,使用以下資源: https : //jsonformatter.curiousconcept.com/

希望這會有所幫助。

暫無
暫無

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

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