如何比较两个数组值并获得差异。
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) );
以上代码段仅提供匹配但不包含
答案 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) })});