我有两个数组,其Remove
应从List
中删除,并且应删除已删除的数字。
我正在使用此功能删除'Remove'
中的内容:
let output=this.List.filter((el)=>{
return this.Remove.indexOf(el) <0;
})
这工作正常,但我想计算重叠的项目数,因此已在过滤器中删除。
例如,如果List=['1','2','3','4','5']
和Remove=['1','4']
,则count
为2
。
非常感谢!
答案 0 :(得分:0)
您可以在reduce
次运行中执行此操作。例如,您可以创建一个对象并跟踪已清除的数组和一些已删除的元素:
const a = [1,2,3,4,5,6,7];
const b = [1,4,9]; // elements to remove
const 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)
&#13;
答案 1 :(得分:0)
如果您不想按照评论中的建议比较长度(这很好......),我可以使用计数器为您提出以下解决方案:
let list = ['1', '2', '3', '4', '5'],
remove = ['1', '4'],
overlap = 0;
let output = list.filter(el => {
let bool = remove.indexOf(el) < 0;
if (!bool) overlap++;
return bool;
});
console.log(overlap);