📌  相关文章
📜  如何在javascript中从数组中获取重复值(1)

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

JavaScript中获取数组中重复值的方法

在开发JavaScript应用程序时,有时候需要获取数组中重复的元素。在JavaScript中,我们可以使用不同的方法获取数组中重复元素。

方法一:使用Set数据结构

Set是一种数据结构,它只包含唯一的元素,不会重复。我们可以将数组转换为Set,然后再将Set转为数组,这样就能获取数组中重复的元素。

const array = [1, 2, 3, 3, 4, 5, 5];
const set = new Set(array);
const duplicates = Array.from(set).filter((item) => array.indexOf(item) !== array.lastIndexOf(item));
console.log(duplicates); // [3, 5]

在上面的代码中,我们使用了ES6的语法,其中:

  • const array:定义了一个包含重复元素的数组;
  • const set:将数组转换为Set;
  • const duplicates:转换为数组后过滤出重复元素。
方法二:使用双重循环

这种方法比较直接,但是效率较低,不适用于大数据集。

const array = [1, 2, 3, 3, 4, 5, 5];
const duplicates = [];

for (let i = 0; i < array.length; i++) {
  for (let j = i + 1; j < array.length; j++) {
    if (array[i] === array[j] && duplicates.indexOf(array[i]) === -1) {
      duplicates.push(array[i]);
    }
  }
}

console.log(duplicates); // [3, 5]

在上面的代码中,我们使用了两个嵌套的循环,其中:

  • const array:定义了一个包含重复元素的数组;
  • const duplicates:保存重复元素;
  • 循环中使用了一些条件语句,过滤出重复元素,并将其添加到duplicates数组中。
方法三:使用reduce

这种方法使用了数组的reduce方法,可以一次遍历得到重复元素。

const array = [1, 2, 3, 3, 4, 5, 5];
const duplicates = array.reduce((accumulator, currentValue, index, array) => {
  if (array.indexOf(currentValue) !== index && accumulator.indexOf(currentValue) === -1) {
    accumulator.push(currentValue);
  }
  return accumulator;
}, []);

console.log(duplicates); // [3, 5]

在上面的代码中,我们使用了数组的reduce方法,其中:

  • const array:定义了一个包含重复元素的数组;
  • const duplicates:保存重复元素;
  • reduce方法的回调函数中,使用if语句过滤出重复元素,并将其添加到accumulator数组中。
总结

在JavaScript中,我们可以使用不同的方法获取数组中重复的元素。选择哪种方法取决于数据集的大小和性能需求。Set方法是最快的方法,使用双重循环的方式效率较低,而使用reduce方法可以一次遍历得到重复元素。