【发布时间】:2016-04-15 17:56:07
【问题描述】:
我有一个包含 parentId 和排序值的对象数组,我想将它们放入包含嵌套“子项”的数组中并进行适当排序。
例如,这是数据:
[{
id: 1,
sort: 2,
parentId: null,
name: 'A'
}, {
id: 2,
sort: 1,
parentId: 1,
name: 'A.1'
}, {
id: 3
sort: 2,
parentId: 1,
name: 'A.2'
}, {
id: 4,
sort: 1,
parentId: null,
name: 'B'
}]
我想改变它的方式是:
[{
id: 4,
sort: 1,
parentId: null,
name: 'B',
children: []
}, {
id: 1,
sort: 2,
parentId: null,
name: 'A',
children: [{
id: 2,
sort: 1,
parentId: 1,
name: 'A.1'
}, {
id: 3
sort: 2,
parentId: 1,
name: 'A.2'
}]
}]
这是已排序的(id 4 位于顶部,因为 sort 为 1)并且子级嵌套并相应地排序。
有什么好的方法可以做到这一点吗?我可以递归循环以应用孩子,但不确定如何保持排序。
【问题讨论】:
-
names 只有一个字符吗?name的第一部分是像A-Z那样只有字母还是有数字和特殊字符? -
@stackErr 我认为名字在这里根本不重要,你不需要他们来回答这个问题。他添加了这些内容,以便我们更轻松地查看所有内容的去向。
-
@stackErr 是的,这些名称只是为了简单起见。所有逻辑都将基于 id、parentId 和排序。
-
有无尽的关卡吗?还是只有两个深?
-
只有两个,但可能它应该通过递归支持任何级别
标签: javascript arrays sorting