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

如何遍历两个数组获取arr1中独有的元素?

问题:提取数组arr1中独有的元素

现有两个数组:

arr1 = [ 'Account2', 'Account4', 'Account4', 'Account5' ]
arr2 = [ 'Account2', 'Account4', 'Account7' ]

需要生成一个新数组arr3,只包含arr1中存在但arr2中没有的元素,预期结果为arr3 = ['Account5']。

我尝试了以下代码,但未得到正确结果:

for (var i = 0; i < arr1.length; i++) {
    for (var j = 0; j < arr2.length; j++) {
      if (arr1[i] != arr2[j]) {
        arr3.push(arr1[i]);
      }
    } 
  }
  console.log("arr3", arr3);

问题分析

你的代码逻辑错误:只要arr1的元素和arr2里某一个元素不相等,就将其推入arr3。比如Account2会和arr2中的Account4、Account7不相等,因此会被推入两次;每个Account4都会和arr2中的Account2、Account7不相等,各自被推入两次,最终arr3会变成['Account2','Account2','Account4','Account4','Account4','Account4','Account5','Account5','Account5'],完全不符合预期。

正确解法

解法1:修正双重循环逻辑

要判断元素是否完全不在arr2中,应先假设元素不存在于arr2,遍历arr2找到相等元素后标记为存在,最终仅将未标记的元素推入arr3:

var arr1 = [ 'Account2', 'Account4', 'Account4', 'Account5' ];
var arr2 = [ 'Account2', 'Account4', 'Account7' ];
var arr3 = [];

for (var i = 0; i < arr1.length; i++) {
  var existsInArr2 = false;
  for (var j = 0; j < arr2.length; j++) {
    if (arr1[i] === arr2[j]) {
      existsInArr2 = true;
      break; // 找到匹配项后立即终止内层循环,提升效率
    }
  }
  if (!existsInArr2) {
    arr3.push(arr1[i]);
  }
}

console.log("arr3", arr3); // 输出: arr3 ['Account5']

解法2:用数组API简化代码

利用filter和includes组合,代码更简洁直观:

var arr1 = [ 'Account2', 'Account4', 'Account4', 'Account5' ];
var arr2 = [ 'Account2', 'Account4', 'Account7' ];
var arr3 = arr1.filter(item => !arr2.includes(item));

console.log("arr3", arr3); // 输出: arr3 ['Account5']

filter会遍历arr1的每个元素,仅保留满足!arr2.includes(item)的元素——也就是arr2中不存在的元素。

解法3:可选去重处理

如果arr1中存在重复的独有元素,希望arr3仅保留唯一值,可结合Set实现:

var arr1 = [ 'Account2', 'Account4', 'Account4', 'Account5', 'Account5' ];
var arr2 = [ 'Account2', 'Account4', 'Account7' ];
var arr3 = [...new Set(arr1.filter(item => !arr2.includes(item)))];

console.log("arr3", arr3); // 输出: arr3 ['Account5']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:05:44