javascript - 比较两个数组后仅删除第一个重复值和所有其他匹配值
问题描述
我有两个数组,我正在尝试从第 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));
解决方案
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 )
推荐阅读
- java - 我应该在这段代码中做些什么改变,以便两个线程一直到数组的末尾并打印它的所有内容
- for-loop - 为什么 doGet 触发函数不能访问请求中传递的参数?
- sql - 选择在 30 天内每周至少玩 2 次或更多时间的唯一用户。(SQL/BigQuery)
- javascript - 使用 chart.js 在工具提示中显示两个值
- android - 在 Android 10 上选择视频文件:错误 NdkMediaExtractor 无法创建 HTTP 服务
- windows-10 - 自定义 Windows 10 文件资源管理器快捷菜单
- javascript - 使用输入 url Javascript 打开新窗口
- java - 将 ETL 链中的所有转换器模拟为单个 Mock
- javascript - LitElement Web 组件表单事件目标设置为 null
- python - 如何在 Flask/Connexion 中获取原始请求负载?