,我有以下數據:對數據進行排序成樹
var data = [
{ index : 1, sort : 10, parent : 0 },
{ index : 2, sort : 7, parent : 0 },
{ index : 3, sort : 15, parent : 1 },
{ index : 4, sort : 4, parent : 0 },
{ index : 5, sort : 13, parent : 1 },
{ index : 6, sort : 20, parent : 5 },
{ index : 7, sort : 2, parent : 8 },
{ index : 8, sort : 6, parent : 5 },
];
如何有效地兩家母公司ID和排序值,使我最終解決這:
var data = [
{ index : 4, sort : 4, parent : 0 },
{ index : 2, sort : 7, parent : 0 },
{ index : 1, sort : 10, parent : 0 },
{ index : 5, sort : 13, parent : 1 },
{ index : 8, sort : 6, parent : 5 },
{ index : 7, sort : 2, parent : 8 },
{ index : 6, sort : 20, parent : 5 },
{ index : 3, sort : 15, parent : 1 },
];
這是一個樹形結構。每個元素之後緊跟着任何子元素,並且同一分支上的所有元素都按排序值排序。
我能想到的最好的方法是首先按父母排序,然後在每個分支上進行第二排序。這似乎效率低下。
編輯:示例排序順序錯誤。我糾正了它。
編輯澄清:每個嵌套的分支需要緊挨着父值出現,而不是在分支末尾。
編輯:進一步修正數據。
感謝Tomalak,這是一個很好的OO Javascript。比我的效率更高。也是遞歸的一個很好的例子。 – SystemicPlural
@SystemicPlural:謝謝。另請參閱幾分鐘前添加的功能。 – Tomalak
再次感謝。我決定進行基準測試。你的答案比我的快大約250倍。出於好奇,我然後將你的答案轉換爲單身封閉,並進一步增加了10%。不知道爲什麼。它只能處理一棵樹,因爲它是一個單身人士,但這對我的用例來說很好。 – SystemicPlural