📅  最后修改于: 2023-12-03 15:08:02.922000             🧑  作者: Mango
在 JavaScript 中,我们可以轻松地找出数组中的重复项及其计数。通过以下几种方法,我们可以实现这一功能。
我们可以创建一个对象,用于存储数组中的元素和它们的计数。然后,我们可以循环遍历数组中的每个元素,并将其添加到计数对象中。如果元素已经存在于对象中,则增加其计数器。最后,我们可以遍历计数对象,以查找重复项及其计数。
const arr = [1, 2, 3, 2, 1, 1, 4, 5, 4];
const counts = {};
// 将每个元素添加到计数对象中
arr.forEach((elem) => {
if (counts[elem]) {
counts[elem]++;
} else {
counts[elem] = 1;
}
});
// 遍历计数对象以查找重复项及其计数
for (const elem in counts) {
if (counts[elem] > 1) {
console.log(`元素 ${elem} 在数组中出现了 ${counts[elem]} 次`);
}
}
输出:
元素 1 在数组中出现了 3 次
元素 2 在数组中出现了 2 次
元素 4 在数组中出现了 2 次
我们可以使用 Set 对象来过滤掉数组中的重复项。然后,我们可以循环遍历 Set 对象,以查找数组中的重复项及其计数。
const arr = [1, 2, 3, 2, 1, 1, 4, 5, 4];
// 使用 Set 过滤掉数组中的重复项
const set = new Set(arr);
// 遍历 Set 对象以查找重复项及其计数
for (const elem of set) {
const count = arr.filter((e) => e === elem).length;
if (count > 1) {
console.log(`元素 ${elem} 在数组中出现了 ${count} 次`);
}
}
输出:
元素 1 在数组中出现了 3 次
元素 2 在数组中出现了 2 次
元素 4 在数组中出现了 2 次
我们可以使用 Array.reduce() 函数来计数数组中的元素。reduce() 函数将数组中的元素与一个累加器参数组合成一个新值,该新值被用作下一次迭代的累加器参数。我们可以设置一个对象作为累加器的初始值,并在 reduce() 函数中对该对象进行操作。最终,我们可以遍历计数对象,以查找数组中的重复项及其计数。
const arr = [1, 2, 3, 2, 1, 1, 4, 5, 4];
// 使用 reduce 函数计数
const counts = arr.reduce((acc, curr) => {
if (!acc[curr]) {
acc[curr] = 1;
} else {
acc[curr]++;
}
return acc;
}, {});
// 遍历计数对象以查找重复项及其计数
for (const elem in counts) {
if (counts[elem] > 1) {
console.log(`元素 ${elem} 在数组中出现了 ${counts[elem]} 次`);
}
}
输出:
元素 1 在数组中出现了 3 次
元素 2 在数组中出现了 2 次
元素 4 在数组中出现了 2 次
以上三种方法可以用来查找 JavaScript 数组中的重复项及其计数。使用对象进行计数的方法最为简单,但是它使用了两个循环,因此性能最差。使用 Set 过滤器的方法使用了一个循环和一个过滤器,性能较好。使用 reduce 函数计数的方法也只使用了一个循环,因此它的性能最佳。