Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在树结构中连接两个对象数组?_Javascript_Arrays - Fatal编程技术网

Javascript 如何在树结构中连接两个对象数组?

Javascript 如何在树结构中连接两个对象数组?,javascript,arrays,Javascript,Arrays,我有两个对象数组 第一个数组 [ { value: 'Node 1', id: 1, childs: [ { value: 'Node 2', id : 2, childs: [ { value: 'Node 3', id: 3

我有两个对象数组 第一个数组

[ { 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 } ] } ] 而且这些数组可能更难,并且有更多的子数组


我怎样才能得到我想要的

您正在寻找
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的两个元素。例如