簡體   English   中英

我需要幫助在 javascript 中將 JSON 數據轉換為 3 級多維數組

[英]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.

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