首页 > 解决方案 > 我被困在一个 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));

标签: javascriptarraysfunction

解决方案


您正在正确计算值,但是您正在递归调用此方法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,有些引擎允许更多。


推荐阅读