Javascript 比较数组并在值不同时进行更改
我有JavaScript的下一种情况:Javascript 比较数组并在值不同时进行更改,javascript,Javascript,我有JavaScript的下一种情况: const arr1 = [1,2,3]; // by default it is empty `[]` const arr2 = [2,1,8,9]; arr1可以动态更改。所以有时候它可能是[1,2,3,4]或者[4,2,3]等等 下一个想法是: 根据arr1更改arr2的方式,如, 如果arr1中的数字与arr2中的数字相等, 然后应删除arr2中相等的数字, 但是如果在arr1中添加的新号码在arr2中不存在,则应在arr2中添加该号码: 例:
const arr1 = [1,2,3]; // by default it is empty `[]`
const arr2 = [2,1,8,9];
arr1
可以动态更改。所以有时候它可能是[1,2,3,4]
或者[4,2,3]
等等
下一个想法是:
根据arr1
更改arr2
的方式,如,如果
arr1
中的数字与arr2
中的数字相等,然后应删除
arr2
中相等的数字,但是如果在
arr1
中添加的新号码在arr2
中不存在,则应在arr2
中添加该号码:例:
arr1=[];arr2=[2,1,8,9]
//什么都没有发生arr1=[1];arr2=[2,8,9]
//删除arr2中的1arr1=[1,8,9,7];arr2=[1,2,7]
//删除arr2中的1,8,9,添加7让我解释一下逻辑。。对于
arr1
中的每个元素,如果arr2
具有该元素(arr2.indexOf(a)!=-1
),则运行while循环,该循环将在arr2
中与arr1
中的特定元素匹配的所有元素被删除时停止
最后,如果arr2不包含特定元素,则
else
逻辑将激活
const arr1=[1,2,3];//默认情况下,它是空的“[]`
常数arr2=[2,1,8,9];
函数更新器(arr1、arr2){
arr1.forEach(a=>{
设index=arr2.indexOf(a)
如果(索引!=-1){
while(index!=-1){arr2.splice(index,1);index=arr2.indexOf(a)}
}
else{arr2.push(a)}
})
返回arr2
}
//函数接受2个变量,使用第一个变量编辑第二个变量
log(updateArr([2,3,7,9],[2,1,8,9]))
console.log(updateArr(arr1,arr2))
console.log(“没有cap它工作\n”,arr2)
让我解释一下逻辑。。对于arr1
中的每个元素,如果arr2
具有该元素(arr2.indexOf(a)!=-1
),则运行while循环,该循环将在arr2
中与arr1
中的特定元素匹配的所有元素被删除时停止
最后,如果arr2不包含特定元素,则
else
逻辑将激活
const arr1=[1,2,3];//默认情况下,它是空的“[]`
常数arr2=[2,1,8,9];
函数更新器(arr1、arr2){
arr1.forEach(a=>{
设index=arr2.indexOf(a)
如果(索引!=-1){
while(index!=-1){arr2.splice(index,1);index=arr2.indexOf(a)}
}
else{arr2.push(a)}
})
返回arr2
}
//函数接受2个变量,使用第一个变量编辑第二个变量
log(updateArr([2,3,7,9],[2,1,8,9]))
console.log(updateArr(arr1,arr2))
log(“No cap it works\n”,arr2)
简单地说,您希望只保留Arr1和arr2的uniques元素,并在arr2中给出结果(不在新数组中)
函数updArr2(arr1、arr2)
{
设set1=新集合(arr1)
,plus=arr1.filter(x=>!arr2.includes(x))
for(设i=arr2.length;i--;)
if(set1.has(arr2[i])arr2.拼接(i,1)
plus.forEach(e=>arr2.push(e))
}
常数
arr_1=[1,2,3]
,arr_2=[2,1,8,9]
;
updArr2(arr_1,arr_2)
console.log(JSON.stringify(arr_2))
简单地说,您希望只保留Arr1和Arr2的uniques元素,并在Arr2中给出结果(不在新数组中)
函数updArr2(arr1、arr2)
{
设set1=新集合(arr1)
,plus=arr1.filter(x=>!arr2.includes(x))
for(设i=arr2.length;i--;)
if(set1.has(arr2[i])arr2.拼接(i,1)
plus.forEach(e=>arr2.push(e))
}
常数
arr_1=[1,2,3]
,arr_2=[2,1,8,9]
;
updArr2(arr_1,arr_2)
console.log(JSON.stringify(arr_2))
您能否展示一个使用react js钩子的示例,比如useState
,比如const[arr2,setArr2]=useState([1,2,3])。在这种情况下如何改变状态?好的,我会跟你说清楚的。。我还没有真正学会react(中学一年即将结束,所以这会改变),但我可以做一个函数,你能帮我做这个函数吗?哦。。只是有点语法错误。。我的错。。现在检查一下,您是否可以展示一个使用react js钩子的示例,比如useState
,比如const[arr2,setArr2]=useState([1,2,3])。在这种情况下如何改变状态?好的,我会跟你说清楚的。。我还没有真正学会react(中学一年即将结束,所以这会改变),但我可以做一个函数,你能帮我做这个函数吗?哦。。只是有点语法错误。。我的错。。现在检查一下arr1
和/或arr2
可以是非常大的数组大小(超过1000个元素?、10000、100000…)@Msterjojo,没有arr1
和/或arr2
可以是非常大的数组大小(超过1000个元素?、10000、100000…)@Msterjojojo,没有