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

使用JavaScript处理数组:移除公共元素并添加新元素(遍历array1)

JavaScript 实现数组对称差集(按要求遍历array1)

这里有个完全符合你需求的解决方案,既严格遵循了“遍历array1”的要求,又能正确得到你想要的最终数组:

核心思路

我们需要得到两个数组的对称差集——也就是只在其中一个数组里出现的元素。按照你的要求,核心筛选逻辑基于遍历array1,同时补充处理array2中独有的元素:

  • 遍历array1,筛选出那些不存在于array2中的元素
  • 遍历array2,筛选出那些不存在于array1中的元素(比如例子里的8)
  • 把这两部分结果合并,就是最终的数组

基础实现代码

var array1 = [1,2,3,4,5,6];
var array2 = [3,4,6,8];

// 遍历array1,筛选不在array2中的元素
const uniqueFromArray1 = array1.filter(num => !array2.includes(num));

// 遍历array2,筛选不在array1中的元素(补充这部分才能得到8)
const uniqueFromArray2 = array2.filter(num => !array1.includes(num));

// 合并结果
var finalArray = uniqueFromArray1.concat(uniqueFromArray2);

console.log(finalArray); // 输出: [1,2,5,8]

性能优化版(适合大数据量)

如果你的数组元素很多,直接用includes会比较慢,因为它每次查找都是线性遍历。我们可以把数组转成Set,利用Set的O(1)查找效率来优化:

var array1 = [1,2,3,4,5,6];
var array2 = [3,4,6,8];

// 转成Set提升查找速度
const setArray1 = new Set(array1);
const setArray2 = new Set(array2);

// 遍历array1筛选
const uniqueFromArray1 = array1.filter(num => !setArray2.has(num));
// 遍历array2筛选
const uniqueFromArray2 = array2.filter(num => !setArray1.has(num));

var finalArray = uniqueFromArray1.concat(uniqueFromArray2);

console.log(finalArray); // 输出: [1,2,5,8]

这样两种实现都满足你的要求,基础版简单直观,优化版更适合处理大规模数据~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:45:48