2012-03-07 41 views
0
Soccer 
    Australia 
    Melbourne 
    Sydney 
    New Zealand 
    Christchurch 
Tennis 
    United Kingdom 
    Kensington 
    London 
    Manchester 

我試過多維數組,但是由於長度不同而變得很笨拙。我也嘗試過使用鍵/值對,但是我又遇到了困難,因爲在某種程度上,只有值和沒有鍵。我試圖用視覺來表示層次結構。澄清悉尼是澳大利亞的孩子。澳大利亞是足球的小孩。足球是網球的兄弟姐妹等等。我將如何在JavaScript中表示以下菜單結構?

編輯:我正在尋找一種解決方案,不需要任何有關實際數據的知識。換句話說,我可以用「棒球」替換掉「足球」,並且只需打印出數據結構的簡單算法就不會中斷。

回答

4

在JSON:

{ 
    "Soccer": { 
     "Australia": [ 
      "Melbourne", 
      "Sydney" 
     ], 
     "NewZealand": [ 
      "Christchurch" 
     ] 
    }, 
    "Tennis": { 
     "UnitedKingdom": [ 
      "Kensington", 
      "London", 
      "Manchester" 
     ] 
    } 
} 

下面是通過數據的循環:

for (sport in data) { 
    // print sport here 
    countries = data[sport];  
    for (country in countries) { 
     // print country here 
     cities = countries[country]; 
     for (var i = 0; i < cities.length; i++) { 
      // print city here 
     }; 
    }; 
};​ 

能上的jsfiddle這裏可以看出:http://jsfiddle.net/2p6g3/18/

+0

我在原始問題中增加了一個小修改。 JSON是否仍然符合附加要求?謝謝 – Hoa 2012-03-07 11:45:14

+0

應該沒問題。你想讓我添加一些簡單的代碼來循環並打印數據嗎? – Jivings 2012-03-07 15:36:44

+0

如果你可以這將不勝感激 – Hoa 2012-03-07 19:20:11

0
{ 
"sport": [ 
    { 
     "name": "Soccer", 
     "place": [ 
      { 
       "country": "Australia", 
       "city": [ 
        { 
         "name": "Melbourne" 
        }, 
        { 
         "nam": "Sdney" 
        } 
       ] 
      }, 
      { 
       "country": "NewZealand", 
       "city": [ 
        { 
         "name": "Christchurch" 
        } 
       ] 
      } 
     ] 
    }, 
    { 
     "name": "Tennis", 
     "place": [ 
      { 
       "country": "UnitedKingdom", 
       "city": [ 
        { 
         "name": "Manchester" 
        } 
       ] 
      } 
     ] 
    } 
] 

}

環通arr ay of object to get required fields:

sport[].name // name of the sports 
sport[].place[].country // country name 
sport[].place[].city[].name // city name 
+0

這不是一個非常準確的數據表示。 – Jivings 2012-03-07 20:22:52