【发布时间】:2012-12-17 10:57:26
【问题描述】:
我有一个对象数组,其中每个对象都有一个 id 和一个 ParentId 属性(因此它们可以排列在树中)。它们没有特定的顺序。
请注意id's 和parentId's 将不是整数,它们将是字符串(只是想让示例代码更清晰..)
只有一个根:假设它是id:1
数据如下:
data = [
{
id:"id-2",
parentId:"id-3"
},
{
id:"id-4",
parentId:"2"
},
{
id:"id-3",
parentId:"id-4"
},
{
id:"id-5",
parentId:"id-4"
},
{
id:"id-6",
parentId:"id-1"
},
{
id:"id-7",
parentId:"id-1"
}
// and so on...
]
我正在寻找一种有效的方法来给每个对象一个 level 属性,该属性应该指定它的嵌套级别...
它们应该看起来像这样:
data = [
{
id:"id-2",
parentId:"id-1",
level:2
},
{
id:"id-3",
parentId:"id-4",
level:5
},
{
id:"id-4",
parentId:"id-2",
level:3
},
{
id:"id-5",
parentId:"id-4",
level:5
},
{
id:"id-6",
parentId:"id-1",
level:2
},
{
id:"id-7",
parentId:"id-3",
level:4
}
// and so on...
]
简而言之:
我希望 level 通过循环遍历数组并找出层次结构来动态添加..
此外,(如果可能的话)它们应该按照顺序排序,例如来自同一父级的所有对象level:3 应该彼此相邻,而不是应该有同一个父级的兄弟姐妹彼此相邻,而不是 3 级的两个表兄弟彼此相邻。
【问题讨论】:
-
你的根元素是什么样子的?
-
只有一个根,假设它的
parentId:1(将是一个字符串) -
数据是否已经按
id排序? -
@JoeCoder,不,这将是随机顺序。
-
根元素的 id 和 parentId 是什么?该元素的级别应该是多少?
标签: javascript algorithm sorting hierarchy dataflow