[英]I need help converting JSON data into a 3 level multidimensional array in javascript
我需要幫助將 JSON 數據轉換為 javascript 中的 3 級多維數組。 我以 JSON 格式檢索的代碼如下所示:
[
{'City':'Philadelphia','State':'Pennsylvania','Country':'United States'},
{'City':'Pittsburgh','State':'Pennsylvania','Country':'United States'},
{'City':'Harrisburg','State':'Pennsylvania', 'Country':'United States'},
{'City':'Sacramento', 'State':'California', 'Country':'United States'},
{'City':'Fremont', 'State':'California', 'Country':'United States'},
{'City':'Los Angeles', 'State':'California','Country': 'United States'},
{'City':'Sydney', 'State':'New South Wales', 'Country':'Australia'},
{'City':'Melbourne', 'State':'Victoria', 'Country':'Australia'}
]
但我需要這種格式:
$scope.countries = {
'United States':
{
'Pennsylvania': ['Philadelphia', 'Pittsburgh', 'Harrisburg'],
'California': ['Sacramento', 'Fremont', 'Los Angeles']
},
'Australia':
{
'New South Wales': ['Sydney'],
'Victoria': ['Melbourne']
}
};
所以它看起來像這樣給你你想要的 JSON
Plunker: http ://plnkr.co/edit/Nx4hrAex8JCCbnYG5X3t?p=preview
編輯以使用新格式。
var original = [
{'City':'Philadelphia','State':'Pennsylvania','Country':'United States'},
{'City':'Pittsburgh','State':'Pennsylvania','Country':'United States'},
{'City':'Harrisburg','State':'Pennsylvania', 'Country':'United States'},
{'City':'Sacramento', 'State':'California', 'Country':'United States'},
{'City':'Fremont', 'State':'California', 'Country':'United States'},
{'City':'Los Angeles', 'State':'California','Country': 'United States'},
{'City':'Sydney', 'State':'New South Wales', 'Country':'Australia'},
{'City':'Melbourne', 'State':'Victoria', 'Country':'Australia'}
]
var json = {};
for(var i in original){
var country = original[i].Country;
var state = original[i].State;
var city = original[i].City;
var obj = {};
if(!json.hasOwnProperty(country)){
obj[state] = [city];
json[country] = obj;
}
else if(json[country].hasOwnProperty(state)){
json[country][state].push(city);
}
else if(!json[country].hasOwnProperty(state)){
json[country][state] = [city];
}
}
我強烈建議您更改數據的傳輸方式。 話雖如此,如果您打算鍵入數組括號而不是對象括號,我已經為您的問題提供了 JSBin 解決方案。
https://jsbin.com/qaxubigija/edit?js,console
function dataParse() {
var data = [
[ 'Philadelphia','Pennsylvania','United States'],
['Pittsburgh','Pennsylvania','United States'],
['Harrisburg','Pennsylvania', 'United States'],
['Sacramento', 'California', 'United States'],
['Fremont', 'California', 'United States'],
['Los Angeles', 'California', 'United States'],
['Sydney', 'New South Wales', 'Australia'],
['Melbourne', 'Victoria', 'Australia']
];
var newObject = {};
for(var i = 0; i < data.length; i++) {
// create your references
var currentNode = data[i],
city = currentNode[0],
state = currentNode[1],
country = currentNode[2];
// check that the country property exists
// create if it does not exist
if( typeof newObject[country] == 'undefined'){
newObject[country] = {};
}
// check that the state property exists
// create if it does not exist
if( typeof newObject[country][state] == 'undefined'){
newObject[country][state] = [];
}
// push city to the proper array
newObject[country][state].push(city);
}
console.log(newObject);
}
dataParse();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.