📌  相关文章
📜  计算数组中每个元素的数量 javascript (1)

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

计算数组中每个元素的数量

在 JavaScript 中,我们经常需要计算数组中每个元素的数量。这在很多情况下都是很有用的,比如统计词频、计算各种商品的销售额等等。

方法一:使用 for 循环

我们可以使用 for 循环遍历整个数组,然后用一个对象来存储每个元素出现的次数。具体实现代码如下:

function countElements(arr) {
  const counts = {};
  for (let i = 0; i < arr.length; i++) {
    if (counts[arr[i]] === undefined) {
      counts[arr[i]] = 1;
    } else {
      counts[arr[i]]++;
    }
  }
  return counts;
}

const arr = [1, 2, 3, 2, 1, 2, 3, 4, 5];
console.log(countElements(arr)); // 输出 {1: 2, 2: 3, 3: 2, 4: 1, 5: 1}
方法二:使用 reduce 方法

除了使用 for 循环外,我们还可以使用 reduce 方法来实现。代码如下:

function countElements(arr) {
  return arr.reduce((counts, num) => {
    counts[num] = (counts[num] || 0) + 1;
    return counts;
  }, {});
}

const arr = [1, 2, 3, 2, 1, 2, 3, 4, 5];
console.log(countElements(arr)); // 输出 {1: 2, 2: 3, 3: 2, 4: 1, 5: 1}
方法三:使用 Map 数据结构

除了对象外,我们还可以使用 Map 数据结构来存储每个元素出现的次数。代码如下:

function countElements(arr) {
  const counts = new Map();
  for (let i = 0; i < arr.length; i++) {
    const num = arr[i];
    counts.set(num, (counts.get(num) || 0) + 1);
  }
  return counts;
}

const arr = [1, 2, 3, 2, 1, 2, 3, 4, 5];
console.log(countElements(arr)); // 输出 Map(5) {1 => 2, 2 => 3, 3 => 2, 4 => 1, 5 => 1}
总结

以上就是三种计算数组中每个元素的数量的方法。对于小型数组来说,使用哪种方法都无所谓;但对于大型数组,使用 reduce 或 Map 可能会更加高效。在实际应用中,我们可以根据具体情况选择合适的方法。