📌  相关文章
📜  比较两个数组并删除重复的javascript(1)

📅  最后修改于: 2023-12-03 14:55:56.835000             🧑  作者: Mango

JavaScript中比较两个数组并删除重复元素

当涉及到处理数组时,一个常见的任务是比较两个数组并删除重复元素。在JavaScript中,我们可以使用不同的方法来实现这个任务。在本文中,我们将介绍三种流行的方法。

方法一:利用Set

ES6引入了Set,它是一种数据结构,用于存储无重复元素的集合。我们可以利用Set去重。

const arr1 = [1, 2, 3];
const arr2 = [2, 3, 4];
const set1 = new Set(arr1);
const set2 = new Set(arr2);
const difference = new Set([...set1].filter(x => !set2.has(x)));
const result = [...difference];
console.log(result); // Output: [1,4]

上面代码,首先我们创建了两个数组arr1arr2,然后我们将它们转换为两个Set对象。接下来,我们使用filter()has()方法找到在set1中出现而不在set2中出现的元素并将它们放入另一个Set对象中。最后,我们将这些元素从Set对象转换为数组。

方法二:利用reduce

我们也可以使用reduce()方法和数组的indexOf()方法来实现删除重复元素的功能。

const arr1 = [1, 2, 3];
const arr2 = [2, 3, 4];
const merged = arr1.concat(arr2);
const result = merged.reduce((acc, curr) => {
  if (acc.indexOf(curr) === -1) {
    acc.push(curr);
  }
  return acc;
}, []);
console.log(result); // Output: [1, 2, 3, 4]

在这个例子中,我们首先将arr1arr2合并为一个数组,然后我们使用reduce()方法和indexOf()方法创建一个新数组。reduce()方法累加器的初始值为空数组[],它将循环遍历每个元素并将它们添加到新数组中。如果元素在新数组中不存在,它将被添加到其中。

方法三:利用filter和includes

我们可以使用filter()方法和includes()方法来实现删除重复元素的功能。

const arr1 = [1, 2, 3];
const arr2 = [2, 3, 4];
const merged = arr1.concat(arr2);
const result = merged.filter((item, index) => merged.indexOf(item) === index);
console.log(result); // Output: [1, 2, 3, 4]

在这个例子中,我们将arr1arr2合并为一个数组,然后我们使用filter()方法创建一个新数组,并将条件限制为只保留数组中第一个出现的元素。

结论

以上三种方法,我们可以根据实际需求选择使用。使用Set对象让代码更简洁和易读。使用reduce()暴露了很多内部工作细节,但它是一种非常可靠和灵活的方法。使用filter()includes()只是一种更直观的方法,更易于理解。