首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何查找第一个数组和第二个数组之间的差异

如何查找第一个数组和第二个数组之间的差异
EN

Stack Overflow用户
提问于 2020-10-28 16:12:42
回答 2查看 90关注 0票数 1

我有两个数组和一个发现差异的方法。

但目前,该方法显示了两种阵列之间的差异。

如何实现第一个数组与第二个数组的比较,以便只返回第一个数组的差异。

代码语言:javascript
运行
复制
let test1 = ['1', '2', '3', '4/2', '5/4', '6-2'];
let test2 = ['1', '2', '3', '5/4', '4/2', '6-1', '7/2', '8-2'];


const diff = function (arr1, arr2) {
    return arr1.filter(i => !arr2.includes(i)).concat(arr2.filter(i => !arr1.includes(i)))
}

console.log(diff(test1, test2));

预期返回值: 6-2

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-28 16:15:41

将第二个数组的所有数目放入一个Set中,然后在第一个数组上使用.filter()方法过滤Set中不存在的第一个数组中的元素。

代码语言:javascript
运行
复制
let test1 = ['1', '2', '3', '4/2', '5/4', '6-2'];
let test2 = ['1', '2', '3', '5/4', '4/2', '6-1', '7/2', '8-2'];


const diff = function(arr1, arr2) {
  const set = new Set(arr2);
  return arr1.filter(n => !set.has(n));
}

console.log(diff(test1, test2));

注意:,您也可以在filter()方法中使用!arr2.includes(n)条件,但是对于arr1中的每个数字,我们将遍历arr2中的每个元素,这并不理想。使用Set,我们不必检查arr2中的每个元素。

票数 2
EN

Stack Overflow用户

发布于 2020-10-28 16:15:09

您需要在第一个数组上筛选第二个数组中没有的所有元素,因此:

代码语言:javascript
运行
复制
const test1 = ['1', '2', '3', '4/2', '5/4', '6-2'];
const test2 = ['1', '2', '3', '5/4', '4/2', '6-1', '7/2', '8-2'];

const differences = test1.filter(o => !test2.includes(o));

console.log(differences);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64576892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档