使用 JavaScript 计算数组中的重复项

计算数组中的重复项

Count the Duplicates in an Array using JavaScript

要计算数组中的重复项:

  1. 声明一个空对象变量,它将存储每个值的计数。
  2. 使用该forEach()方法遍历数组。
  3. 在每次迭代中,将值的计数递增1或将其初始化为1
索引.js
const arr = ['one', 'two', 'one', 'one', 'two', 'three']; const count = {}; arr.forEach(element => { count[element] = (count[element] || 0) + 1; }); // 👇️ {one: 3, two: 2, three: 1} console.log(count);

我们传递给
Array.forEach
方法的函数会针对数组中的每个元素进行调用。

在每次迭代中,我们检查当前值是否已经作为count对象中的键存在。如果存在,我们将其递增1

如果该值不存在,我们将其初始化为1

我们使用逻辑或 (||) 运算符来检查数组中的键是否尚未初始化。如果访问器返回undefined,我们将键的值初始化为0+ 1

在最后一次迭代之后,该count对象包含数组元素作为键,它们在数组中出现的次数作为值。

另一种帮助我们避免中间count变量的方法是使用
Array.reduce
方法。

使用该reduce()方法计算数组中的重复项,将一个空对象作为累加器的初始值传递给它。在每次迭代中,增加对象中值的计数,或将值初始化为
1

索引.js
const arr = ['one', 'two', 'one', 'one', 'two', 'three']; const count = arr.reduce((accumulator, value) => { return {...accumulator, [value]: (accumulator[value] || 0) + 1}; }, {}); // 👇️ {one: 3, two: 2, three: 1} console.log(count);

这种方法非常相似。然而,它允许我们避免声明一个空的对象变量。

我们传递给reduce()方法的函数会为数组中的每个元素调用。

我们传递了一个空对象作为变量的初始值。 accumulator

无论我们从回调函数返回什么,都将作为accumulator
下一次迭代传递。

我们使用
解构赋值
将累加器中的键值对解压缩到一个新对象中,我们通过递增或初始化它来覆盖当前属性
1

在最后一次迭代之后,对象将数组的元素存储为键,并将它们在数组中的出现存储为值。