比较两个数组值(如果包含)并获得差异

时间:2018-06-19 03:43:33

标签: javascript

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

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

我想检查list2值是否包含list1s

所以1xx33 contains 1xx4eeeooo contains 4eee然后我尊重的结果是['2bbb', '3ggg'];

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

以上代码段仅提供匹配但不包含

1 个答案:

答案 0 :(得分:2)

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

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

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

如果您不熟悉arrow functions=>),可以选择以下方法:

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