You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中如何移除数组重复字符串并获取两数组差集?

嘿,这个需求很常见,我给你几种简单实用的实现方式,你可以根据自己的场景选择:

方法1:原生数组方法组合(直观易用)

适合元素数量不多的场景,用filter()配合includes()就能快速搞定:

const json1 = ["one","two"];
const json2 = ["one","two","three","four"];

// 过滤出json2中不在json1里的元素
const result = json2.filter(item => !json1.includes(item));
console.log(result); // 输出 ["three","four"]

原理很简单:filter()会遍历json2的每一个元素,includes()检查当前元素是否存在于json1中,取反后就留下了只在json2里出现的元素。

方法2:用Set优化性能(大数据量首选)

如果你的数组元素很多,includes()的时间复杂度是O(n),多次调用会拖慢速度。换成Set的has()方法(时间复杂度O(1))能大幅提升效率:

const json1 = ["one","two"];
const json2 = ["one","two","three","four"];

// 先把json1转成Set结构,方便快速查找
const json1Set = new Set(json1);
const result = json2.filter(item => !json1Set.has(item));
console.log(result); // 输出 ["three","four"]

先将json1转换为Set集合,之后遍历json2时用has()判断元素是否存在,比includes()高效得多,大数据量场景下优势明显。

扩展:如果需要双向差集(可选)

要是之后你需要获取两个数组各自独有的元素(比如同时得到json1里没有的和json2里没有的),可以这么写:

const set1 = new Set(json1);
const set2 = new Set(json2);
const result = [
  ...json1.filter(item => !set2.has(item)),
  ...json2.filter(item => !set1.has(item))
];

不过针对你当前的需求,前面两种单向差集的方法就完全够用啦。

内容的提问来源于stack exchange,提问作者Jan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:50:19