Javascript 计算两个数组中重叠项的数量

Javascript 计算两个数组中重叠项的数量,javascript,Javascript,我有两个数组,其中Remove应该从列表中删除,删除的数字应该计算在内 我正在使用此选项从'remove'中删除这些内容: let output=this.List.filter((el)=>{ return this.Remove.indexOf(el) <0; }) let output=this.List.filter((el)=>{ 返回此.Remove.indexOf(el)您可以在一次reduce运行中执行此操作。例如,您可以创建一个对象并跟踪已清除的数

我有两个数组,其中
Remove
应该从
列表中删除,删除的数字应该计算在内

我正在使用此选项从
'remove'
中删除这些内容:

  let output=this.List.filter((el)=>{
    return this.Remove.indexOf(el) <0;
  })
let output=this.List.filter((el)=>{

返回此.Remove.indexOf(el)您可以在一次
reduce
运行中执行此操作。例如,您可以创建一个对象并跟踪已清除的数组和许多已删除的元素:

const a=[1,2,3,4,5,6,7];
常量b=[1,4,9];//要删除的元素
常数c=a.reduce((acc,cur)=>b.includes(cur)
?Object.assign(acc,{n:acc.n+1})
:Object.assign(acc,{res:acc.res.concat(cur)}),{n:0,res:[]});

console.log(c)
如果您不想比较注释中建议的长度(这很好…),我可以使用计数器向您提出以下解决方案:

let list=['1','2','3','4','5'],
删除=['1','4'],
重叠=0;
让输出=列表.过滤器(el=>{
设bool=remove.indexOf(el)<0;
如果(!bool)重叠++;
返回布尔;
});

console.log(重叠);
这可能过于简单,但为什么不比较删除前后的
长度呢?只需比较删除前后的列表长度,然后找出差异。