javascript - 查找给定数组中重复数字的计数并将输出作为对象返回
问题描述
在我最近的一次采访中,有人问过我这个问题。例如,对于给定的数组,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}
好吧,没有正确理解后台发生的事情的代码对开发人员来说毫无意义:)
谁能帮助我了解这实际上是如何工作的?
解决方案
使用每个唯一数组元素的计数创建对象的主要工作发生在以下块中:
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;
}
希望能帮助你理解代码。
推荐阅读
- authentication - 将 6.4 eap 迁移到 7.2 eap 时,Jboss Authentication principalsQuery 不起作用
- sql - 如何使用不相等的列和行连接 2 个 SQL 查询
- vba - 取平方根时无效的过程调用或参数(0.5 次方)
- jquery - BootStrap 模态弹出窗口未使用 JQuery 打开
- google-sheets - 如何根据过滤值在另一个 Google 工作表中执行 VLOOKUP?
- php - Laravel Rate Limiting,带有消息和验证后的剩余时间
- c++ - 使用帧缓冲区时出现闪烁区域
- php - php explode is hitting maximum size
- git - Git纠正分支和工作树不匹配
- docker - 发出“docker container stop”命令后如何执行命令/脚本?