js判断数组中否有重复元素

1,213 阅读1分钟

给定一个数组,判断是否有重复元素,有则返回true,没有则返回false

  1. 通过indexOf()判断 从0号位置开始遍历数组到length-1,截取当前位置后的剩余数组,判断当前元素是否在剩余数组中
function isRepetition(data) {
  for (let i = 0; i < data.length - 1; i++) {  //遍历到倒数第二位
    const shortArray = data.slice(i + 1); //截取余下数组
    if (shortArray.indexOf(data[i]) !== -1) {
      return true;
    }
  }
  return false;
}
  1. 先排序,然后比较相邻元素是否相等
function isRepetition(data) {
  data = data.sort();
  for (let i = 0; i < data.length - 1; i++) {
    if (data[i] === data[i + 1]) {
      return true;
    }
  }
  return false;
}
  1. 通过object对象辅助,将元素作为属性存在对象中,然后判断对象中是否有这个键值
function isRepetition(data) {
  const obj = {};
  for (let el of data) {
    if (obj[el]) {
      return true;
    } else {
      obj[el] = true;
    }
  }
  return false;
}