Javascript-循环嵌套循环

我尝试的第一个循环在代码的/ * * /中。第二个代码是do while循环。在这两种情况下,循环只会继续,并且不会重复嵌套循环。我不太确定自己在做什么错。 while条件可能不正确,但我担心的是未重置内部循环。索引似乎未重置为0。

我正在使用Google Apps脚本

function getWorkingSessions() {
  var api_token = "************************";
  var range_start = "2019-09-01";
  var range_end = "2019-09-02";
  var company = "*****";
  var range = Spreadsheetapp.getactiveSpreadsheet().getSheetByName("Daten Papershift")
  var row = range.getLastRow()+1;
  var pageget = 1

  var options = {
    'method' : 'get','contentType': 'application/json',};

  /* var result = UrlFetchApp.fetch("https://app.papershift.com/public_api/v1/working_sessions?api_token=" + api_token + "&range_start=" + range_start + "&range_end=" + range_end + "&page=" + pageget + "&company_id=" + company);
  if (result.getResponseCode() == 200) {
    var session = JSON.parse(result.getcontentText());
    var params = session.working_sessions;

   /* for (; page < 3; page++) {
      var resultb = UrlFetchApp.fetch("https://app.papershift.com/public_api/v1/working_sessions?api_token=" + api_token + "&range_start=" + range_start + "&range_end=" + range_end + "&page=" + page + "&company_id=" + company);
      var sessions = JSON.parse(resultb.getcontentText());
      var workingsessions = sessions.working_sessions;
      var index = 0;

      for (; index < workingsessions.length -1; index++,row++) {
        range.getRange(row,1,1).setvalue(workingsessions[index].id);
        var datum = Utilities.formatDate(new Date(workingsessions[index].starts_at),"GMT","dd.MM.yyyy");
        range.getRange(row,2,1).setvalue(datum)
        var start = Utilities.formatDate(new Date(workingsessions[index].starts_at),"HH:mm");
        range.getRange(row,3,1).setvalue(start);
        var end = Utilities.formatDate(new Date(workingsessions[index].ends_at),4,1).setvalue(end);
        range.getRange(row,5,1).setvalue(workingsessions[index].location_id);
        range.getRange(row,6,1).setvalue(workingsessions[index].employee_id);
      };
    }; */
    var page = 1;

    do {
      var resultb = UrlFetchApp.fetch("https://app.papershift.com/public_api/v1/working_sessions?api_token=" + api_token + "&range_start=" + range_start + "&range_end=" + range_end + "&page=" + page + "&company_id=" + company);
      var sessions = JSON.parse(resultb.getcontentText());
      var workingsessions = sessions.working_sessions;
      var index = 0;
      for (; index < workingsessions.length-1; index++,"GMT+2",1).setvalue(workingsessions[index].employee_id);
      };
      page++;
    } while ( sessions.next_page != "null" );

 /* } else {}; */
};
di880518 回答:Javascript-循环嵌套循环

索引确实为0,尽管我理解您的疑问,因为在for括号外初始化条件变量(索引)不是很好,并且除了for内的条件变量之外,其他操作也不是很好,您可以做到,它可以在javascript上运行,但是效果不好。

这按预期工作,因此您的索引肯定为0。

function getWorkingSessions() {

  var row = 1;

    do {
      var index = 0;
      for (; index < 6; index++,row++) {
        Logger.log(row);
        Logger.log(index);        

      };
    } while ( row<5 );

 /* } else {}; */
};

问题在while条件下:

sessions.next_page != "null" 

将始终为true,因为API永远不会返回空字符串,因此称为“ null”

sessions.next_page != null 

最终,当没有更多页面时,API返回null,因此此表达式将不会始终为true。 null是缺少任何对象值,null是包含单词null的字符串。

所以,问题在于,应用程序脚本环境正在进入一个永无止境的循环,因此,看起来好像它没有进入您的嵌套,但这是因为您的代码陷入了永无止境的循环并崩溃环境。

只需:

    } while ( sessions.next_page != null );

您应该返回一个有限的递归世界,而不是像我们赖以生存的这种无限资本扩张(即所谓的资本主义)那样,破坏我们的环境。

本文链接:https://www.f2er.com/3115497.html

大家都在问