Javascript 创建ID互不跟随的父子树JSON

Javascript 创建ID互不跟随的父子树JSON,javascript,json,Javascript,Json,我正在尝试创建一个包含数据库记录的树, 首先,我使用了以下代码: 它工作得很好,但由于我可以在数据库中插入和删除树的节点,因此该函数不再工作。 如您所见,现在我可以使用Id为90的第一个元素,而childrens宽度的Id更小 var arry = [{ "parentId": null, "moduleId": 90 }, { "parentId": 1, "moduleId":65 }, { "parentId": 1, "modul

我正在尝试创建一个包含数据库记录的树, 首先,我使用了以下代码:

它工作得很好,但由于我可以在数据库中插入和删除树的节点,因此该函数不再工作。 如您所见,现在我可以使用Id为90的第一个元素,而childrens宽度的Id更小

var arry = [{
    "parentId": null,
    "moduleId": 90
 },
 {
    "parentId": 1,
    "moduleId":65
 },
 {
    "parentId": 1,
    "moduleId": 91
 },
 {
    "parentId": 65,
    "moduleId": 66
 },
 {
    "parentId": 66,
    "moduleId": 79   
 },
 {
    "parentId": 90, 
    "moduleId": 1 
 }
];
小提琴:

当然,我不能更改数据库中的ID(这太简单了)。 所以我想知道如何让每件事都顺利进行,如果你能帮我的话。。
提前谢谢

对于更复杂的树,我建议使用递归方法,例如:

var arry=[{parentId:null,moduleId:90},{parentId:1,moduleId:65},{parentId:1,moduleId:91},{parentId:65,moduleId:66},{parentId:66,moduleId:79},{parentId:90,moduleId:1}];
函数递归树(数组){
函数getChildren(父级,输入){
返回parents.map(parent=>{
const children=input.filter(x=>x.parentId===parent.moduleId);
parent.children=children;
if(children.length==0){
返回父母;
}否则{
parent.children=getChildren(children,输入);
返回父母;
}
})	
}
const root=array.filter(x=>x.parentId==null);
返回getChildren(根、数组);
}
var r=递归树(arry)
log('array',r);

console.log('result',JSON.stringify(r))
它工作得很好,谢谢!我试图找到递归方法的资源,但是很难找到,而且我真的不知道从哪里开始,如果你有针对初学者的递归方法的资源,我接受!谢谢again@abvlle你好我不知道有什么资源可以专门学习递归。递归广泛应用于函数编程,如
lisp
clojure
scala
。因此,训练函数式编程语言将自然地增加您的递归感受。嘿,除了接受答案,如果你觉得有用的话,你还可以向上投票