javascript - 从递归函数中传递数组

标签 javascript recursion google-apps-script

我正在尝试列出树结构内的所有文件。我在网上找到了以下代码,它可以执行此操作,但将文件夹和文件名输出到错误日志。 (我正在使用 BetterLog 将其发送到电子表格。我希望在函数运行时将信息保存到数组中,问题是该函数是递归的,我不知道如何解决这个问题。

function getChildFolders(parent) {
Logger =    BetterLog.useSpreadsheet('1nJ3fTFYQgwwXYik3LqAoX2M1KHj4lskrxyX0Y9p6ci8');

var childFolders = parent.getFolders();

while (childFolders.hasNext()) {

var childFolder = childFolders.next();

Logger.log("Folder Name: " + childFolder.getName());
Logger.log("Folder URL:  " + childFolder.getUrl());

var files = childFolder.getFiles();

while (files.hasNext()) {

// Print list of files inside the folder
  Logger.log(files.next().getName());  
  }

  // Recursive call for any sub-folders
  getChildFolders(childFolder);

}

}

最佳答案

好吧,只需将数组作为函数的参数传递即可,如下所示:

function getChildFolders(parent,array) {
  var childFolders = parent.getFolders();

  while (childFolders.hasNext()) {

    var childFolder = childFolders.next();

    array.push("Folder Name: " + childFolder.getName());
    array.push("Folder URL:  " + childFolder.getUrl());

    var files = childFolder.getFiles();

    while (files.hasNext()) {

      // Print list of files inside the folder
      array.push(files.next().getName());  
    }

    // Recursive call for any sub-folders
    getChildFolders(childFolder, array);
  }

  return array;
}

function test() {
  var array = getChildFolders(DriveApp.getRootFolder(), []);
  Logger.log(array);
}

关于javascript - 从递归函数中传递数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32426779/

相关文章:

vb.net - 为什么这不是无限递归? VB.NET 中的默认变量初始化是如何工作的?

JavaScript 检查某些文本中的许多关键字?

javascript - 在 Google 电子表格数据库中以编程方式监视编辑

javascript - jQuery 查找选中 radio 的输入

javascript - 是否可以从兄弟元素上下文中选择 jquery 上下文中的文本?

recursion - Scheme 中的 Mandelbrot 集实现非常慢

java - 递归选择排序 (Java Eclipse Neon 2)

javascript - Google Apps脚本中的本地时间与脚本时间和触发时间

javascript - 使用 jQuery 构建动态表单部件

javascript - 使用 JQuery 获取第 N 列中的元素。