【发布时间】:2020-09-30 15:38:07
【问题描述】:
我有这个清单:
0: {id: 7, name: "333", code: "333", type: 3, hasParent: true, parentId: 4}
1: {id: 6, name: "dfgdfg", code: "dfgdfg", type: 3, hasParent: false, parentId: null}
2: {id: 5, name: "111", code: "111", type: 3, hasParent: true, parentId: 4}
3: {id: 4, name: "22", code: "22", type: 1, hasParent: false, parentId: null}
4: {id: 3, name: "yyy", code: "yyyy", type: 2, hasParent: false, parentId: null}
5: {id: 2, name: "dfgdfg", code: "dfgdfg", type: 3, hasParent: true, parentId: 1}
6: {id: 1, name: "cbcvb", code: "cvbcvcbv", type: 2, hasParent: false, parentId: null}
我需要按 parent 和 child 对这个列表进行排序。
如果 item 的 parent 值等于另一个 item 的 id 值,则具有 parentId 值的 item 应该放在 parent 值等于 id 值的 item 下。
喜欢这个列表:
4: {id: 3, name: "yyy", code: "yyyy", type: 2, hasParent: false, parentId: 6}
1: {id: 6, name: "dfgdfg", code: "dfgdfg", type: 3, hasParent: false, parentId: null}
0: {id: 7, name: "333", code: "333", type: 3, hasParent: true, parentId: 4}
2: {id: 5, name: "111", code: "111", type: 3, hasParent: true, parentId: 4}
3: {id: 4, name: "22", code: "22", type: 1, hasParent: false, parentId: null}
5: {id: 2, name: "dfgdfg", code: "dfgdfg", type: 3, hasParent: true, parentId: 1}
6: {id: 1, name: "cbcvb", code: "cvbcvcbv", type: 2, hasParent: false, parentId: null}
我写了这段代码,但它没有工作并且没有对项目列表进行排序:
var Data = [{ id: 7, name: "333", code: "333", type: 3, hasParent: true, parentId: 4 },
{ id: 6, name: "dfgdfg", code: "dfgdfg", type: 3, hasParent: false, parentId: null },
{ id: 5, name: "111", code: "111", type: 3, hasParent: true, parentId: 4 },
{ id: 4, name: "22", code: "22", type: 1, hasParent: false, parentId: null },
{ id: 3, name: "yyy", code: "yyyy", type: 2, hasParent: false, parentId: null },
{ id: 2, name: "dfgdfg", code: "dfgdfg", type: 3, hasParent: true, parentId: 1 },
{ id: 1, name: "cbcvb", code: "cvbcvcbv", type: 2, hasParent: false, parentId: null }];
var result = [];
Data.forEach((values) => {
if (result.indexOf(values) === -1) {
result.push(values);
}
if (values.parentId !== null) {
var d_ = Data.filter(srch => {
return values.parentId === srch.id;
});
if (result.indexOf(d_[0]) === -1) {
result.push(d_[0]);
}
}
});
console.log(result);
什么问题?这个问题怎么解决???
【问题讨论】:
标签: javascript angular typescript