在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;}
非常感谢您的想法我根据我的代码制作了一些,工作起来很有魅力谢谢您的想法我根据我的代码制作了一些,工作起来很有魅力