在javascript中模拟迭代两个递归数组[数组项包含另一个数组]

在javascript中模拟迭代两个递归数组[数组项包含另一个数组],javascript,arrays,typescript,loops,recursion,Javascript,Arrays,Typescript,Loops,Recursion,我有两个对象数组,它可能包含另一个对象数组,如何使用两个数组进行迭代并相互比较 interface items { name:string; subItems:items[]; value:string; } Array A=['parent1',['child1',['child2',['child3',[],'value3'],'value2'],'value1']]; Array B=['parent1',['child1',[null,['child3',[],'value3'],'

我有两个对象数组,它可能包含另一个对象数组,如何使用两个数组进行迭代并相互比较

interface items {
name:string;
subItems:items[];
value:string;
}

Array A=['parent1',['child1',['child2',['child3',[],'value3'],'value2'],'value1']];

Array B=['parent1',['child1',[null,['child3',[],'value3'],'value2'],'value1']];
预期结果:

Array B=['parent1',['child1',['child2',['child3',[],'value3'],'value2'],'value1']];
这两个数组之间的区别是数组B child2 name为null,所以我想比较两个数组,如果name为null,则从第一个数组复制名称

如何同时迭代可能包含子数组的两个数组

注意:有时我的数组包含N个子数组

我认为我们可以使用递归函数,但是我们如何迭代数组的级别呢


我尝试了多个for和forEach循环它对我不起作用

这是Javascript解决方案。这可能有助于:

    function recursion(arr1,arr2){

       for(let index = 0; (arr1.length>index && arr2.length>index);index++){
            if(Array.isArray(arr1[index]) && Array.isArray(arr2[index])){
                recursion(arr1[index],arr2[index]);
            }else if(arr1[index] !== arr2[index]){
                arr1[index] = arr2[index];
            }
       }
    }

这是Javascript解决方案。这可能有助于:

    function recursion(arr1,arr2){

       for(let index = 0; (arr1.length>index && arr2.length>index);index++){
            if(Array.isArray(arr1[index]) && Array.isArray(arr2[index])){
                recursion(arr1[index],arr2[index]);
            }else if(arr1[index] !== arr2[index]){
                arr1[index] = arr2[index];
            }
       }
    }

您可以将这两个数组放入一个函数中,该函数迭代元素并查找数组,然后再次调用此函数或检查值,如果不同,则更新数组

函数比较重复日期(a,b){
a、 forEach((v,i)=>{
if(Array.isArray(v))返回compareAndUpdate(v,b[i]);
如果(b[i]!==v)b[i]=v;
});
}
变量a=['parent1'、['child1'、['child2'、['child3'、[]、'value3']、'value2']、'value1'],
b=['parent1',['child1',[null,['child3',[],'value3'],'value2'],'value1'];
比较日期(a,b);
控制台日志(b)

.as console wrapper{max height:100%!important;top:0;}
您可以将这两个数组放入一个函数,该函数迭代元素并查找数组,然后再次调用该函数或检查值,如果不同,则更新数组

函数比较重复日期(a,b){
a、 forEach((v,i)=>{
if(Array.isArray(v))返回compareAndUpdate(v,b[i]);
如果(b[i]!==v)b[i]=v;
});
}
变量a=['parent1'、['child1'、['child2'、['child3'、[]、'value3']、'value2']、'value1'],
b=['parent1',['child1',[null,['child3',[],'value3'],'value2'],'value1'];
比较日期(a,b);
控制台日志(b)

.as console wrapper{max height:100%!important;top:0;}
非常感谢您的想法我根据我的代码制作了一些,工作起来很有魅力谢谢您的想法我根据我的代码制作了一些,工作起来很有魅力