📌  相关文章
📜  在数组中查找重复项及其计数 javascript (1)

📅  最后修改于: 2023-12-03 15:08:02.922000             🧑  作者: Mango

在数组中查找重复项及其计数 - JavaScript

在 JavaScript 中,我们可以轻松地找出数组中的重复项及其计数。通过以下几种方法,我们可以实现这一功能。

1. 使用对象进行计数

我们可以创建一个对象,用于存储数组中的元素和它们的计数。然后,我们可以循环遍历数组中的每个元素,并将其添加到计数对象中。如果元素已经存在于对象中,则增加其计数器。最后,我们可以遍历计数对象,以查找重复项及其计数。

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 次
2. 使用 Set 过滤重复项

我们可以使用 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 次
3. 使用 reduce 函数计数

我们可以使用 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 函数计数的方法也只使用了一个循环,因此它的性能最佳。