📜  在 js 数组中查找重复或重复的元素 - Javascript (1)

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

在 JavaScript 中,如果我们需要在数组中查找重复或重复的元素,有几种常见的方法可以实现。下面,我将介绍其中的三种方法。

方法一:使用对象/哈希表

这是一种非常简单和高效的方法。我们可以使用一个对象或哈希表来存储数组中的每个元素,然后遍历数组,检查每个元素是否已经在对象中存在。如果存在,则表示重复。以下是实现该方法的代码片段:

function findDuplicates(arr) {
  const obj = {};
  const duplicates = [];

  for (let i = 0; i < arr.length; i++) {
    if (obj[arr[i]]) {
      duplicates.push(arr[i]);
    } else {
      obj[arr[i]] = true;
    }
  }

  return duplicates;
}

// 使用示例
const array = [1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 9, 9];
const duplicates = findDuplicates(array);
console.log(duplicates); // 输出 [4, 6, 9]

在上述代码中,我们创建了一个空对象 obj 和一个空数组 duplicates。我们遍历数组 arr,对于每个元素 arr[i],检查它是否已经存在于 obj 中。如果是,则将其添加到 duplicates 数组中。否则,将该元素添加到 obj 中。

方法二:使用 Set 对象

ES6 引入的 Set 对象是一种数据结构,它只存储唯一的值,而重复元素会被自动忽略。因此,我们可以使用 Set 对象来查找数组中的重复元素。以下是实现该方法的代码片段:

function findDuplicates(arr) {
  const uniqueElements = new Set();
  const duplicates = [];

  for (let i = 0; i < arr.length; i++) {
    if (uniqueElements.has(arr[i])) {
      duplicates.push(arr[i]);
    } else {
      uniqueElements.add(arr[i]);
    }
  }

  return duplicates;
}

// 使用示例
const array = [1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 9, 9];
const duplicates = findDuplicates(array);
console.log(duplicates); // 输出 [4, 6, 9]

在上述代码中,我们创建了一个空的 Set 对象 uniqueElements 和一个空数组 duplicates。我们遍历数组 arr,对于每个元素 arr[i],检查它是否已经存在于 uniqueElements 中。如果是,则将其添加到 duplicates 数组中。否则,将该元素添加到 uniqueElements 中。

方法三:使用双重循环

这是一种简单但效率较低的方法,特别适用于较小的数组。该方法使用双重循环来比较数组中的每对元素。如果两个元素不相同且索引不同,则表示该元素重复。以下是实现该方法的代码片段:

function findDuplicates(arr) {
  const duplicates = [];

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

  return duplicates;
}

// 使用示例
const array = [1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 9, 9];
const duplicates = findDuplicates(array);
console.log(duplicates); // 输出 [4, 6, 9]

在上述代码中,我们使用两个嵌套的循环来比较数组中的每对元素 arr[i]arr[j]。如果两个元素相等且索引不同,则将其添加到 duplicates 数组中。

这是在 JavaScript 中查找数组中重复或重复元素的三种常见方法。根据不同的需求和数据规模,选择合适的方法可以提高代码的效率和性能。