Javascript 按父项和子项按角度排序项目

Javascript 按父项和子项按角度排序项目,javascript,angular,typescript,Javascript,Angular,Typescript,我有一个角度的数据列表 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

我有一个角度的数据列表

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}
我需要在“角度材质”表中按父对象和子对象对该列表进行排序

我的设想是:

如果该项的父项值等于另一项的id值,则具有父项id值的项应放在父项值等于id值的项下。

项目必须按以下方式排序:

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);

你是如何做到这一点的?@AluanHaddad我对此没有任何想法,那么在考虑使用像angular这样的复杂框架之前,你需要学习编程基础知识。我会编写一些控制台应用程序来学习基本知识parentId:null呢?它们是如何订购的?@AluanHaddad谢谢你的指导,但我知道angular的编程。我想你不明白我的问题。这很复杂,我需要更多的指导来解决这个问题