,我有以下数据:对数据进行排序成树
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