我有這樣的數據:關閉javascript的對象無序列表
var data = {
itemOne:{id:"itemOne",parent:false},
itemTwo:{id:"itemTwo",parent:"itemOne"},
itemThree:{id:"itemThree",parent:"itemTwo"},
itemFour:{id:"itemFour",parent:"itemTwo"},
itemFive:{id:"itemFive",parent:false},
itemSix:{id:"itemSix",parent:"itemOne"},
itemSeven:{id:"itemSeven",parent:"itemFive"},
};
所以在主數據對象的每個子對象指定的ID及其父,如果它沒有被標記爲父母假。我需要做的是輸出到這一個多層次的無序列表,所以它應該是這樣的:
- 項目一
- 項目二
- 項目三
- 項目四
- 項目-SiX
- 項目二
- 項目五
- 項目七個
現在這個數據是Si mplified樣本,但該列表可能超過3個深度級別並以隨機順序呈現。我知道解決方案將涉及某種遞歸,但我不知道如何執行此操作。到目前爲止,我已經建立了以下工作:
var myList = '<ul>';
for(item in data){
var id = data[item]['id'];
var parent = data[item]['parent'];
if(parent == false){
myList += '<li>'+id+'</li>';
//no idea what to do here
}
}
myList += '</ul>';
UPDATE:一些問題的答案已經把我的數據對象到一個數組。數據作爲一個對象保留是很重要的,因爲這是我提供的價值,我無法改變這一點。到目前爲止,我的想法是,我可能需要首先將數據轉換爲多級對象結構,然後一旦完成,將多級對象轉換爲無序列表。這樣數據可以更容易地在最初被操縱到適當的層次中。
你應該使用DFS檢索算法。 – OmG
爲什麼你不只是與兒童財產或東西巢物體?而且你需要一個函數,你可以在它自己內部調用它來遞歸。 – Teemoh
對象中的鍵/值對沒有排序。如果你想強制/保持秩序,你需要使用一個數組。 – 2017-06-17 05:54:56