2017-06-09 25 views
2

我試圖提取數據的多件了JSON文件的投入對象,這樣我就可以將對象轉換回JSON只有我想要的數據。JavaScript的提取JSON數據到一個新的對象

我在想這樣一個目標將是可能的:

data = { 
    0: { 
    lat: xxxx, 
    lng: xxxx, 
    name: xxxx 
    }, 
    1: { 
    ... 
    } 
}; 

下面是提取數據的循環,但我無法弄清楚如何將三個數據點分配到同一個對象(數據.0,data.1,...)在對象(數據)中。

for (let z = 0; z < data.features.length; z++) { 
    finalData.z.lat = data.features[z].center[0]; 
    finalData.z.lng = data.features[z].center[1]; 
    finalData.z.name = data.features[z].text; 
} 

我不介意數組是否用在對象上,因爲它們也可以是JSON.stringified。 data.features的長度因API調用而異。

我希望能做到這一點使用香草JS,但開放的建議。它正在服務器上執行(Node.js)。

回答

1

使用[]符號,它允許訪問屬性,而不是dot符號。

var dataArray = []; 

for (let z = 0; z < data.features.length; z++) { 
    var finalData = {}; 
    finalData[z] = {}; 

    finalData[z].lat = data.features[z].center[0]; 
    finalData[z].lng = data.features[z].center[1]; 
    finalData[z].name = data.features[z].text; 

    dataArray.push(finalData); 
} 

如果您使用ES6,那麼你可以使用[]模式匹配來獲取計算的屬性名稱。

let dataArray = []; 

for (let z = 0; z < data.features.length; z++) { 
    let feature = data.features[z]; 
    let structuredData = { 
     [z]: { 
      lat: feature.center[0], 
      lng: feature.center[1], 
      name: feature.text 
     } 
    }; 

    dataArray.push(structuredData); 
} 
+0

第一個例子沒有工作,但第二個例子像一個魅力工作。我唯一需要改變的是第7行和第8行的逗號分號,並且從第9行的末尾刪除分號。非常感謝! – MorganR

+0

@MorganR我的不好。確實,它們應該是逗號。 –