JS判断数组是否有重复数据

在开发前端应用程序时,经常会遇到需要判断数组中是否有重复数据的情况。这时候我们可以利用JavaScript来实现这个功能。本文将介绍几种方法来判断数组中是否有重复数据并给出相应的代码示例。
方法一:利用Set数据结构
Set是ES6中新增的数据结构,它类似于数组,但是它的成员的值都是唯一的,不允许重复。我们可以利用Set来对数组进行去重操作,然后判断数组的长度是否和原数组的长度一致。
const hasDuplicate = (arr) => {
return new Set(arr).size !== arr.length;
}
let arr1 = [1, 2, 3, 4, 5];
let arr2 = [1, 2, 3, 4, 4];
console.log(hasDuplicate(arr1)); // false
console.log(hasDuplicate(arr2)); // true
在上面的代码中,我们先定义了一个箭头函数hasDuplicate,接收一个数组作为参数,并利用Set数据结构对数组进行去重操作。然后判断去重后的数组长度是否和原数组长度一致,如果不一致则说明数组中有重复数据。
方法二:利用对象的属性
另一种判断数组中是否有重复数据的方法是利用对象的属性。我们可以遍历数组,将数组的每一个元素作为对象的属性,如果该属性已经存在,则说明数组中有重复数据。
const hasDuplicate = (arr) => {
let obj = {};
for (let i = 0; i < arr.length; i++) {
if (obj[arr[i]]) {
return true;
} else {
obj[arr[i]] = true;
}
}
return false;
}
let arr1 = [1, 2, 3, 4, 5];
let arr2 = [1, 2, 3, 4, 4];
console.log(hasDuplicate(arr1)); // false
console.log(hasDuplicate(arr2)); // true
在上面的代码中,我们定义了一个箭头函数hasDuplicate,接收一个数组作为参数,并创建了一个空对象obj。然后遍历数组,将数组的每一个元素作为对象的属性,如果该属性已经存在,则说明数组中有重复数据。
方法三:利用indexOf和lastIndexOf方法
我们还可以利用indexOf和lastIndexOf方法来判断数组中是否有重复数据。对于数组中的每一个元素,我们可以使用indexOf方法获取其第一次出现的位置,再使用lastIndexOf方法获取其最后一次出现的位置,如果这两个位置不相等,则说明数组中有重复数据。
const hasDuplicate = (arr) => {
for (let i = 0; i < arr.length; i++) {
if (arr.indexOf(arr[i]) !== arr.lastIndexOf(arr[i])) {
return true;
}
}
return false;
}
let arr1 = [1, 2, 3, 4, 5];
let arr2 = [1, 2, 3, 4, 4];
console.log(hasDuplicate(arr1)); // false
console.log(hasDuplicate(arr2)); // true
在上面的代码中,我们定义了一个箭头函数hasDuplicate,接收一个数组作为参数。然后对数组中的每一个元素,使用indexOf方法获取其第一次出现的位置,再使用lastIndexOf方法获取其最后一次出现的位置,如果这两个位置不相等,则说明数组中有重复数据。
总结
本文介绍了几种方法来判断数组中是否有重复数据,包括利用Set数据结构、对象的属性和indexOf、lastIndexOf方法。开发者可以根据实际需求选择适合自己的方法来判断数组中是否有重复数据。
极客笔记