Javascript 如何在树结构中连接两个对象数组?
我有两个对象数组 第一个数组 [ { value: 'Node 1', id: 1, childs: [ { value: 'Node 2', id : 2, childs: [ { value: 'Node 3', id: 3 }, { value: 'Node 4', id: 4 } ] } ] } ] [ { 值:“节点1”, id:1, 儿童:[ { 值:“节点2”, id:2, 儿童:[ { 值:“节点3”, 身份证号码:3 }, { 值:“节点4”, 身份证号码:4 } ] } ] } ] 和第二个数组 [ { value: 'Node 1', id: 1, childs: [ { value: 'Node 5', id : 5 } ] } ] [ { 值:“节点1”, id:1, 儿童:[ { 值:“节点5”, 身份证号码:5 } ] } ] 我不明白我怎么能把这些对象数组浓缩成树状结构。 我需要这个结果 [ { value: 'Node 1', id: 1, childs: [ { value: 'Node 2', id : 2, childs: [ { value: 'Node 3', id: 3 }, { value: 'Node 4', id: 4 } ] }, { value: 'Node 5', id : 5 } ] } ] [ { 值:“节点1”, id:1, 儿童:[ { 值:“节点2”, id:2, 儿童:[ { 值:“节点3”, 身份证号码:3 }, { 值:“节点4”, 身份证号码:4 } ] }, { 值:“节点5”, 身份证号码:5 } ] } ] 而且这些数组可能更难,并且有更多的子数组Javascript 如何在树结构中连接两个对象数组?,javascript,arrays,Javascript,Arrays,我有两个对象数组 第一个数组 [ { value: 'Node 1', id: 1, childs: [ { value: 'Node 2', id : 2, childs: [ { value: 'Node 3', id: 3
我怎样才能得到我想要的 您正在寻找
concat()
方法。
因此,您的代码应该如下所示:
array1[0].children.concat(array2[0].children);
尝试此Array#forEach
函数和Array#filter
var arr=[{value:'Node 1',id:1,childs:[{value:'Node 2',id:2,childs:[{value:'Node 3',id:3},{value:'Node 4',id:4
} ] } ] } ];
var arr2=[{value:'Node 1',id:1,childs:[{value:'Node 5',id:5}]]
arr.forEach(功能(a){
var k=arr2.filter(i=>a.value==i.value);
a、 childs.push(…k[0].childs)
})
log(arr)
您可以使用迭代和递归的方法,将id散列为实际级别
函数更新(目标、源){
var hash=Object.create(null);
target.forEach(函数(o){
散列[o.id]=o;
});
forEach(函数(o,i,a){
if(散列[o.id]){
o、 children&&update(hash[o.id]。children=hash[o.id]。children | |[],o.children)
}否则{
目标推送(o);
}
});
}
var array1=[{value:'Node 1',id:1,子项:[{value:'Node 2',id:2,子项:[{value:'Node 3',id:3},{value:'Node 4',id:4}]},
array2=[{value:'Node 1',id:1,子项:[{value:'Node 5',id:5}]}];
更新(阵列1、阵列2);
控制台日志(array1)代码>
。作为控制台包装{max height:100%!important;top:0;}
对不起,我不明白为什么这是一个AngularJS问题。是的,对不起,我用AngularJS来做,但只是JS@Farsay也许他只想得到他想要的,但他的代码他一直在尝试,现在已经接近了,但是如果我更改第二个数组并为节点2添加子元素,我将有节点1->节点2->节点4,我将得到节点2的两个元素。例如