【问题标题】:JavaScript: else if won't work in for loops [Spreadsheet]JavaScript:else if 不会在 for 循环中工作 [电子表格]
【发布时间】:2022-12-16 13:42:38
【问题描述】:

我试图遍历我的谷歌工作表中的整行并在最后一行 +1 打破它 'i' 作为停止循环的指示符,使用 else-if 条件。 但不知何故,循环不会通过 else-if 条件。

  • 当“i”不满足 for 循环条件时循环停止,我怎样才能让它在满足 else-if 条件时停止?

我是 Javascript 和 Typescript 的新手,非常感谢您的每一个建议。

function makedict(){
  var product = {}
  var code = code_dicted
  var name = name_dicted
  var unit = unit_dicted
  var balance = balance_dicted


  var value0 = sheet.getRange("C:M").getValues().map(row => [ row[0]]); //code
  var value1 = sheet.getRange("C:M").getValues().map(row => [ row[1]]); //name
  var value5 = sheet.getRange("C:M").getValues().map(row => [ row[5]]); //bal
  var value6 = sheet.getRange("C:M").getValues().map(row => [ row[10]]); //unit
  var range = sheet.getRange("C:M").getValues().length
  var lastRow = sheet.getLastRow()
  var dict = {}
  var result = "\n\n\n"


for (i = 1;i < range;i++){
  

  dict["code"] = value0[i]
  var code_dicted = dict["code"]
  var code = code_dicted


  dict["name"] = value1[i]
  var name_dicted = dict["name"]
  var name = name_dicted

  dict["balance"] = value5[i]
  var balance_dicted = dict["balance"]
  var balance = balance_dicted

  dict["unit"] = value6[i]
  var unit_dicted = dict["unit"]
  var unit = unit_dicted


  product["detail"] = {code,name,balance,unit}
  // console.log(product)
  
  if (product.detail["balance"]<product.detail["unit"]){
    
    var text = product.detail["code"]+product.detail["name"]+product.detail["balance"]+product.detail["unit"];
    result = result.concat(text)+"\n\n"

  }


  else if (i === lastRow+1){
  console.log(result)
  break
  }
}

【问题讨论】:

  • 也许您可以尝试增加 for 循环中的“范围”?
  • 在这种情况下,我会使用 while 循环
  • @BernhardMiehl 谢谢!我试过使用 While-loop 并且它有效。

标签: javascript spreadsheet


【解决方案1】:

解决了

谢谢你。我已经按照上述建议解决了。 改用 While 循环。

  var i = 1;

  while (i < range){
  

  dict["code"] = value0[i]
  var code_dicted = dict["code"]
  var code = code_dicted


  dict["name"] = value1[i]
  var name_dicted = dict["name"]
  var name = name_dicted

  dict["balance"] = value5[i]
  var balance_dicted = dict["balance"]
  var balance = balance_dicted

  dict["unit"] = value6[i]
  var unit_dicted = dict["unit"]
  var unit = unit_dicted
  i = i+1

  product["detail"] = {code,name,balance,unit}
  // console.log(product)
  
  if (product.detail["balance"]<product.detail["unit"]){
    
    var text = product.detail["code"]+product.detail["name"]+product.detail["balance"]+product.detail["unit"];
    result = result.concat(text)+"

"

  }


  else if (i === lastRow+1){
  console.log(result)
  break
  }
}

【讨论】:

    【解决方案2】:
    for (i = 1;i < range + 1 ;i++){
    

    试试上面的代码,我假设 lastRow 是一个数字,它的范围是0 to range

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-24
      • 2018-03-28
      相关资源
      最近更新 更多