javascript - 比较两个数组值(如果包含)并获得差异
问题描述
如何比较两个数组值并获得差异。
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) );
上面的片段只给出匹配但不包含
解决方案
对于第一个列表中的每个条目,您必须验证第二个列表中的任何值中是否没有匹配的子字符串。
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) })});
推荐阅读
- nginx - Kubernetes 内部网络监控,没有任何 Sidecar
- visual-studio-2019 - Visual Studio 2019:循环槽嵌套文件
- sockets - 通信后关闭套接字连接
- vba - 在 MS ACCES / VBA 中将参数传递给函数的方法
- django - 使用 ssl / nginx /gunicorn 在 vagrant box 中访问(django)应用程序的问题
- c - 在不使用函数 isdigit 的情况下使用 fgets 时如何检查用户输入是否为字符串?
- excel - Excel V查找多个值问题
- c - 如何在 C 中打印多字符常量?
- sql - 使用输入“'abc','xyz'”调用 SQL 存储过程
- android - 如何在屏幕旋转期间保存 MutableList 的状态