首页 > 解决方案 > 比较两个数组值(如果包含)并获得差异

问题描述

如何比较两个数组值并获得差异。

const list1 = ['1xx', '2bbb', '3ggg', '4eee'];
const list2 = ['1xx33', '2333', '3gfffgg', '4eeeooo'];

我想检查 list2 值是否包含 list1s

所以我尊重看到的结果1xx33 contains 1xx是 ;4eeeooo contains 4eee['2bbb', '3ggg']

const output = list1.filter( function(n) { return !this.has(n) }, new Set(list2) );

上面的片段只给出匹配但不包含

标签: javascript

解决方案


对于第一个列表中的每个条目,您必须验证第二个列表中的任何值中是否没有匹配的子字符串。

const output = list1.filter(s => list2.every(b => (b.indexOf(s)===-1)));

此代码段通过过滤第一个列表创建一个新列表,删除与另一个列表相比具有至少一个匹配子字符串的每个条目。

如果您不熟悉箭头函数( =>),可以使用以下替代方法:

const output = list1.filter(function(s) { return list2.every(function(b) { return (b.indexOf(s)===-1) })});


推荐阅读