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

sta*_*wil 3 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");
Run Code Online (Sandbox Code Playgroud)

小智 7

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

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);
Run Code Online (Sandbox Code Playgroud)