首页 > 解决方案 > 查找给定数组中重复数字的计数并将输出作为对象返回

问题描述

在我最近的一次采访中,有人问过我这个问题。例如,对于给定的数组,Arr[2,2,4,3,4,2,3,2,4] 编写一个 javascript 函数来返回一个对象,其中包含上述数组中每个数字的计数,例如

countArr={2:4,3:2,4:3}

经过大量的谷歌搜索,我最终得到了下面的代码,它返回了正确的数据。

var uniqueCount = [2, 2, 4, 3, 4, 2, 3, 2];
var count = {};
uniqueCount.forEach(function(i) {
  count[i] = (count[i] || 0) + 1;
});
console.log(count);

正如我所说,这很好用!Output: {2: 4, 3: 2, 4: 2} 好吧,没有正确理解后台发生的事情的代码对开发人员来说毫无意义:)

谁能帮助我了解这实际上是如何工作的?

标签: javascriptforeach

解决方案


使用每个唯一数组元素的计数创建对象的主要工作发生在以下块中:

uniqueCount.forEach(function(i) {
   count[i] = (count[i] || 0) + 1;
});

在这里,我们像在“for循环”中一样迭代数组中的每个元素。我希望您熟悉“for 循环”的工作原理。然后,我们在函数中传递数组的每个元素。

count[i] = (count[i] || 0) +1;

可以写成:

if(count[i]) {
   count[i] = count[i] + 1;
} else {
   count[i] = 1;
}

希望能帮助你理解代码。


推荐阅读