📌  相关文章
📜  javascript 检查数组是否有重复 - Javascript (1)

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

JavaScript 检查数组是否有重复 - JavaScript

在 JavaScript 中,我们可以使用不同的方法来检查数组中是否存在重复的元素。在本文中,我将介绍几种常用的方法并提供相应的代码示例。

方法一:使用 Set

Set 对象是一种无重复值的集合,可以用于检查数组中是否存在重复元素。我们可以将数组转化为 Set,并比较 Set 的长度与原数组长度是否一致来判断是否存在重复元素。

function hasDuplicate(arr) {
  const set = new Set(arr);
  return set.size !== arr.length;
}

// 例子
const arr1 = [1, 2, 3, 4, 5];
console.log(hasDuplicate(arr1)); // false

const arr2 = [1, 2, 3, 4, 4];
console.log(hasDuplicate(arr2)); // true
方法二:使用 indexOf 和 lastIndexOf

JavaScript 数组提供了两个方法:indexOflastIndexOf,可以用来检查一个元素在数组中的第一个和最后一个索引位置。如果这两个索引位置不同,则说明存在重复元素。

function hasDuplicate(arr) {
  for (let i = 0; i < arr.length; i++) {
    if (arr.indexOf(arr[i]) !== arr.lastIndexOf(arr[i])) {
      return true;
    }
  }
  return false;
}

// 例子
const arr1 = [1, 2, 3, 4, 5];
console.log(hasDuplicate(arr1)); // false

const arr2 = [1, 2, 3, 4, 4];
console.log(hasDuplicate(arr2)); // true
方法三:使用对象或 Map

我们可以使用一个对象或 Map 数据结构来存储数组中的元素,并判断元素是否已经存在于对象或 Map 中。如果元素已经存在,则说明存在重复元素。

function hasDuplicate(arr) {
  const map = new Map();
  for (let i = 0; i < arr.length; i++) {
    if (map.has(arr[i])) {
      return true;
    } else {
      map.set(arr[i], true);
    }
  }
  return false;
}

// 例子
const arr1 = [1, 2, 3, 4, 5];
console.log(hasDuplicate(arr1)); // false

const arr2 = [1, 2, 3, 4, 4];
console.log(hasDuplicate(arr2)); // true

以上就是几种常见的方法来检查 JavaScript 数组中是否存在重复元素的示例代码。

请注意,在处理大型数组时,方法一(使用 Set)通常比方法二和三(使用索引或对象/Map)更高效。因此,根据实际情况选择适合的方法。