📜  javascript 获取数组差异 - Javascript (1)

📅  最后修改于: 2023-12-03 15:01:46.110000             🧑  作者: Mango

JavaScript 获取数组差异

在编写JavaScript程序时,我们经常需要处理数组差异,即找出两个数组之间的相同和不同元素。以下是一些方法,可以轻松地获取数组差异。

1. 使用 for 循环

使用 for 循环可以比较两个数组的元素,然后找出相同和不同的元素。

let arr1 = [1, 2, 3, 4, 5];
let arr2 = [2, 4, 6, 8, 10];
let common = [];
let different = [];

for(let i=0; i<arr1.length; i++){
  if(arr2.indexOf(arr1[i]) !== -1 ){ // 找到相同元素
    common.push(arr1[i])
  }else{ // 找不到相同元素
    different.push(arr1[i])
  }
};

for(let i=0; i<arr2.length; i++){
  if(arr1.indexOf(arr2[i]) === -1 ){ // 找不到相同元素
    different.push(arr2[i])
  }
};

console.log(common) // [2,4]
console.log(different) // [1,3,5,6,8,10]
2. 使用 filter 方法

使用 Array 的 filter 方法可以筛选出符合条件的元素,可以方便的对两个数组进行对比。

let arr1 = [1, 2, 3, 4, 5];
let arr2 = [2, 4, 6, 8, 10];

let common = arr1.filter(element => arr2.includes(element));
let different = arr1.filter(element => !arr2.includes(element))
                 .concat(arr2.filter(element => !arr1.includes(element)));

console.log(common) // [2,4]
console.log(different) // [1,3,5,6,8,10]
3. 使用 Set 对象

使用 Set 对象可以轻松的进行数组去重,并且可以方便地获取两个数组的交集和差集。

let arr1 = [1, 2, 3, 4, 5];
let arr2 = [2, 4, 6, 8, 10];

let set1 = new Set(arr1);
let set2 = new Set(arr2);

let common = new Set([...set1].filter(element => set2.has(element)));
let different = new Set([...set1].filter(element => !set2.has(element)))
                    .add([...set2].filter(element => !set1.has(element)));

console.log(common) // Set(2) { 2, 4 }
console.log(different) // Set(6) { 1, 3, 5, 6, 8, 10 }

以上三种方法都可以轻松地获取数组差异,具体使用哪一种取决于个人喜好和业务需求。