📌  相关文章
📜  检查数组是否具有唯一值 javascript (1)

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

检查数组是否具有唯一值 JavaScript

有时候我们需要检查一个数组是否具有唯一值,也就是说数组中的每个元素都只能出现一次,否则就说明该数组不具有唯一值。

以下是几种常见的检查数组是否具有唯一值的方法:

方法一:使用 Set

使用 Set 数据结构可以很方便的检查一个数组是否具有唯一值。Set 是一种特殊的集合,它的元素是唯一的,没有重复。如果将数组转换成 Set,那么如果数组有重复值,Set 会自动去重,最终的 Set 长度和原数组长度不同,就表明有重复值。

这是一个检查数组是否具有唯一值的函数:

function isUnique(arr) {
  return new Set(arr).size === arr.length;
}

函数接收一个数组作为参数,返回一个布尔值,表示该数组是否具有唯一值。

方法二:使用 indexOf

对于每个元素,使用 indexOf 检查它在数组中是否只出现一次,如果重复出现,就说明该数组不具有唯一值。

这是一个检查数组是否具有唯一值的函数:

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

函数接收一个数组作为参数,返回一个布尔值,表示该数组是否具有唯一值。

方法三:使用 reduce

使用 reduce 方法遍历数组,同时在一个对象中记录每个元素出现的次数,如果有元素出现了多次,就说明该数组不具有唯一值。

这是一个检查数组是否具有唯一值的函数:

function isUnique(arr) {
  const counts = arr.reduce((acc, val) => {
    acc[val] = (acc[val] || 0) + 1;
    return acc;
  }, {});
  for (let val in counts) {
    if (counts[val] > 1) {
      return false;
    }
  }
  return true;
}

函数接收一个数组作为参数,返回一个布尔值,表示该数组是否具有唯一值。

总结

以上是三种常见的检查数组是否具有唯一值的方法,你可以根据实际需要选择其中之一。使用 Set 可以更加简洁方便地实现,但考虑到兼容性,如果你需要支持旧版浏览器,就需要使用 indexOf 或 reduce 方法。