代码之家  ›  专栏  ›  技术社区  ›  Mario Moreno

退出While循环

  •  0
  • Mario Moreno  · 技术社区  · 1 年前

    我正在使用辅助函数在Google Drive中搜索包含数字的文件夹。我想搜索特定文件夹的所有文件夹和子文件夹。问题是,当它找到它时,它不会退出while循环

    function buscarCarpeta(origen, curso) {
      var curso = curso.toString();
      var folders = origen.getFolders();
      while (folders.hasNext()) {
        var folder = folders.next();
        var name = folder.getName();
        var scr = name.search(curso);
        if (scr > -1) {
          Logger.log("Encontrado");
          return folder
        }
        buscarCarpeta(folder, curso);
      }
    }
    

    我不知道该怎么做,所以它会返回正确的文件夹。

    1 回复  |  直到 1 年前
        1
  •  1
  •   Andrea    1 年前

    即使在递归的更深层次中找到文件夹,也不会停止原始while循环的继续。

    要解决此问题,您需要处理递归调用的结果,并在找到匹配时中断,如下所示:

    function buscarCarpeta(origen, curso) {
        curso = curso.toString();
        var folders = origen.getFolders();
        
        while (folders.hasNext()) {
            var folder = folders.next();
            var name = folder.getName();
            var scr = name.search(curso);
            
            if (scr > -1) {
                Logger.log("Encontrado");
                return folder; // Exit on folder found
            }
            
            // Recursive call on subfolders
            var found = buscarCarpeta(folder, curso);
            if (found) {
                return found; // Return the folder
            }
        }
        
        return null; // no folder founded
    }
    

    希望这有帮助;编码愉快!