首页 > 解决方案 > 比较两个数组后仅删除第一个重复值和所有其他匹配值

问题描述

我有两个数组,我正在尝试从第 2 个数组中删除所有匹配值。但是如果值是重复的,它应该只删除第一个重复值。

例如 - 我的两个数组是

arr1=[1,1,2,3,4,4]
arr2=[1,3,4]

它应该给出结果=[1,2,4]

或者如果我的数组是

arr1=[1,1,1,2,3,4,4,4]
arr2=[1,3,4]

它应该给出结果=[1,1,2,4,4]

我尝试了使用过滤器和包含的不同方法,但没有任何效果。下面的代码删除了所有匹配的值,但我想删除所有匹配的值,并且只有第一个重复值才匹配。

  arr1 =
    arr1.filter(f => !arr2.includes(f));

标签: javascriptarraysangular

解决方案


  this.arr2.forEach(x=>{
    if (this.arr1.indexOf(x)>=0)
      this.arr1.splice(index,1)
  })

或者

  this.arr1=this.arr1.filter((x,index)=>this.arr2.indexOf(x)<0 ||
        this.arr1.indexOf(x)!=index )

推荐阅读