📅  最后修改于: 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
中。
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 中查找数组中重复或重复元素的三种常见方法。根据不同的需求和数据规模,选择合适的方法可以提高代码的效率和性能。