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中添加该号码: 例:

我有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
中添加该号码:
例:

  • arr1=[];arr2=[2,1,8,9]
    //什么都没有发生
  • arr1=[1];arr2=[2,8,9]
    //删除arr2中的1
  • arr1=[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,没有