javascript - 我被困在一个 JavaScript 函数中,该函数应该计算数组中的所有唯一项
问题描述
我想创建一个函数,计算数组中的所有唯一项,但不知何故我没有得到任何输出。这是我的阵列!
let arr = ["hi", "hello", "hi"];
这是我到目前为止写的代码:
function countUnique(arr) {
var counts = {};
for (var i = 0; i < arr.length; i++) {
counts[arr[i]] = 1 + (counts[arr[i]] || 0);
}
countUnique(arr);
}
console.log(countUnique(arr));
解决方案
您正在正确计算值,但是您正在递归调用此方法countUnique(arr);
,并导致调用堆栈超出错误。所以只需删除方法的递归调用countUnique(arr);
并返回计数值counts
:
function countUnique(arr) {
var counts = {};
for (var i = 0; i < arr.length; i++) {
counts[arr[i]] = 1 + (counts[arr[i]] || 0);
}
return counts;
}
let arr = ["hi", "hello", "hi"];
console.log(countUnique(arr));
JavaScript 引擎限制了最大递归深度。我们可以相信它是 10000,有些引擎允许更多。
推荐阅读
- php - 同一个实体上的多对多 symfony
- c# - 为什么我的代码不能在 Unity 中运行?统一 C#
- python - 如何解释这两个未压缩的 zlib 样本?
- css - AGM 地图打印显示打印输出中的间隙
- javascript - 关于为搜索框设置操作的问题
- python - futures.ProcessPoolExecutor 的不一致行为
- javascript - 测试 Cafe Headless 能见度检查
- list - Kotlin:将列表分组为地图的地图
- computer-vision - 为什么在图像上应用光流不能产生准确的下一帧
- javascript - 仅使用 javascript 获取未选中的复选框