javascript - 递归循环数组并返回项目数?

标签 javascript arrays recursion

如果之前有人问过这个问题,但我找不到答案,我深表歉意。如何循环遍历具有嵌套数组的数组并在控制台中打印出项目出现的实例数?

因此 console.log 应该打印出名称“bob”的数字 2,因为“bob”在数组中出现了两次。

这是我的数组和目前为止的内容:

    var names = ["bob", ["steve", "michael", "bob", "chris"]];

    function loop(arr, item) {
      for (var i = 0; i < arr.length; i++) {
        if (arr[i] instanceof Array) {
          loop(arr[i], item);
        } else {
          if (arr[i] == item) {
            console.log(arr[i]);
          }
        }
      }
    }

    loop(names, "bob");

最佳答案

在这里,请注意,您可以在内部保留计数器值,以保持代码的其余部分更简洁:

var names = ["bob", ["steve", "michael", "bob", "chris"]];

function loop(arr, item) {
  var result = 0;
  for (var i = 0; i < arr.length; i++) {
    if (arr[i] instanceof Array) {
      result += loop(arr[i], item);
    } else {
      if (arr[i] == item) {
        result++;
      }
    }
  }
  return result;    
}


var result = loop(names, "bob");
console.log(result);

关于javascript - 递归循环数组并返回项目数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35874640/

相关文章:

javascript - 如果上传字段有文件,请执行某些操作

javascript - 在 Node.JS 中跨数组迭代保存

arrays - 为什么 emgu 图像具有包含额外高度元素的数组?

python - 递归的中间结果

javascript - 为什么 plotly 面积图不能正确显示数据?

javascript - jQuery - 检查 .json 文件是否有效

javascript - jQuery 检查数组中字母是否可用

php - 数组相交给出错误的输出

java - 递归创建新对象是否比创建引用慢?

algorithm - 什么是计算 3 维 i-j-k 网格图中边数的递归算法?