📅  最后修改于: 2023-12-03 14:54:59.875000             🧑  作者: Mango
在 JavaScript 中,我们经常需要处理数组,其中一个常见的问题是如何找出数组中的重复数字。
Set 对象是 ES6 新增的一个数据结构,可以用来存储一组唯一的值。我们可以利用这个特性来找出数组中的重复数字。
const findDuplicate = arr => {
const set = new Set();
const result = [];
for (let i = 0; i < arr.length; i++) {
if (set.has(arr[i])) {
result.push(arr[i]);
} else {
set.add(arr[i]);
}
}
return result;
};
const arr = [1, 2, 3, 2, 1, 4, 5, 5];
const duplicates = findDuplicate(arr);
console.log(duplicates); // [1, 2, 5]
除了使用 Set 对象,我们还可以使用普通对象来实现查找数组中的重复数字。
const findDuplicate = arr => {
const counts = {};
const result = [];
for (let i = 0; i < arr.length; i++) {
if (counts[arr[i]]) {
result.push(arr[i]);
} else {
counts[arr[i]] = 1;
}
}
return result;
};
const arr = [1, 2, 3, 2, 1, 4, 5, 5];
const duplicates = findDuplicate(arr);
console.log(duplicates); // [1, 2, 5]
我们还可以使用 reduce 函数来实现查找数组中的重复数字。reduce 函数用于将数组中的每个元素按照指定的方法累加到一个结果中。
const findDuplicate = arr => {
const counts = arr.reduce((acc, val) => {
acc[val] = (acc[val] || 0) + 1;
return acc;
}, {});
return Object.entries(counts)
.filter(([key, value]) => value > 1)
.map(([key, value]) => parseInt(key));
};
const arr = [1, 2, 3, 2, 1, 4, 5, 5];
const duplicates = findDuplicate(arr);
console.log(duplicates); // [1, 2, 5]
以上是三种常见的方法来查找数组中的重复数字。使用 Set 对象和对象的方式比较简单,并且执行效率较高。使用 reduce 函数可以更加精简,但需要注意一些细节。根据实际需求选择不同的方法即可。