📜  计算重复值 javascript (1)

📅  最后修改于: 2023-12-03 14:57:35.389000             🧑  作者: Mango

计算重复值 JavaScript

在处理数据时,有时需要计算数据中某些值的数量。在 JavaScript 中,可以通过循环遍历数组或对象来计算重复值。

以下是两种常见的计算重复值的方法。

1. 使用对象键值对

可以使用对象的键值对来计算重复值。将数组或对象中的值作为键名,将重复值的数量作为键值,循环遍历数组或对象,每次遇到一个值时,判断该值是否存在于对象中,如果存在,将对应的键值加一,如果不存在,则添加新的键值对。

function countDuplicates(arr) {
  const count = {};
  arr.forEach(item => {
    count[item] = (count[item] || 0) + 1;
  });
  return count;
}

代码解析:

  • 首先,创建一个空对象 count,用于存储每个值出现的次数。
  • 使用 foreach 方法循环遍历输入的数组 arr
  • 在每次循环中,判断当前值是否已经存在于对象 count 中,如果存在,则将该值的计数器加 1,否则添加新的键值对。
  • 返回计数器对象 count
2. 使用 Map 数据结构

除了使用对象,还可以使用 ES6 引入的 Map 数据结构来计算重复值。Map 对象是一组键值对的集合,其中每个键都唯一,可以使用它来记录每个值出现的次数。

function countDuplicates(arr) {
  const count = new Map();
  arr.forEach(item => {
    count.set(item, (count.get(item) || 0) + 1);
  });
  return count;
}

代码解析:

  • 首先,创建一个空的 Map 对象 count,用于存储每个值出现的次数。
  • 使用 foreach 方法循环遍历输入的数组 arr
  • 在每次循环中,判断当前值是否已经存在于 Map 对象 count 中,如果存在,则将该值的计数器加 1,否则添加新的键值对。
  • 返回计数器 Map 对象 count
总结

两种方法都可以有效计算输入值的重复值,使用对象可提供更加简洁的语法,而使用 Map 更易于扩展,此外 Map 对象还提供了更多的方法供使用。无论哪种方法,都可以根据具体任务的需求来进行选择。