📅  最后修改于: 2023-12-03 15:24:30.411000             🧑  作者: Mango
在开发JavaScript应用程序时,有时候需要获取数组中重复的元素。在JavaScript中,我们可以使用不同的方法获取数组中重复元素。
Set是一种数据结构,它只包含唯一的元素,不会重复。我们可以将数组转换为Set,然后再将Set转为数组,这样就能获取数组中重复的元素。
const array = [1, 2, 3, 3, 4, 5, 5];
const set = new Set(array);
const duplicates = Array.from(set).filter((item) => array.indexOf(item) !== array.lastIndexOf(item));
console.log(duplicates); // [3, 5]
在上面的代码中,我们使用了ES6的语法,其中:
const array
:定义了一个包含重复元素的数组;const set
:将数组转换为Set;const duplicates
:转换为数组后过滤出重复元素。这种方法比较直接,但是效率较低,不适用于大数据集。
const array = [1, 2, 3, 3, 4, 5, 5];
const duplicates = [];
for (let i = 0; i < array.length; i++) {
for (let j = i + 1; j < array.length; j++) {
if (array[i] === array[j] && duplicates.indexOf(array[i]) === -1) {
duplicates.push(array[i]);
}
}
}
console.log(duplicates); // [3, 5]
在上面的代码中,我们使用了两个嵌套的循环,其中:
const array
:定义了一个包含重复元素的数组;const duplicates
:保存重复元素;duplicates
数组中。这种方法使用了数组的reduce方法,可以一次遍历得到重复元素。
const array = [1, 2, 3, 3, 4, 5, 5];
const duplicates = array.reduce((accumulator, currentValue, index, array) => {
if (array.indexOf(currentValue) !== index && accumulator.indexOf(currentValue) === -1) {
accumulator.push(currentValue);
}
return accumulator;
}, []);
console.log(duplicates); // [3, 5]
在上面的代码中,我们使用了数组的reduce方法,其中:
const array
:定义了一个包含重复元素的数组;const duplicates
:保存重复元素;reduce
方法的回调函数中,使用if语句过滤出重复元素,并将其添加到accumulator
数组中。在JavaScript中,我们可以使用不同的方法获取数组中重复的元素。选择哪种方法取决于数据集的大小和性能需求。Set方法是最快的方法,使用双重循环的方式效率较低,而使用reduce方法可以一次遍历得到重复元素。