【问题标题】:Google Apps Script <= operator issueGoogle Apps 脚本 <= 操作员问题
【发布时间】:2018-07-06 06:55:53
【问题描述】:

我们正在编写一个函数来解析 W#-W# 格式的 Google 电子表格列中的周数指定(例如 W1-10、W3-13 等)由于某种原因,应用程序脚本正在处理 几乎 就好像它是一个 = 运算符。

功能:

for (var row = 0; row < qBow.length; row++) {
  var wRange = qBow[row][6];
  var wRsplit = wRange.split('W').join('');
  var wNums = wRsplit.split('-');
  var currentWnum = activeSheet.getName().substring(1);

  Logger.log('row: ' + row + ' currentWnum: ' + currentWnum + ' wNums[0]: ' + wNums[0] + ' wNums[1]: ' + wNums[1]);

  if (currentWnum >= wNums[0] && currentWnum <= wNums[1]) {
    Logger.log('row: ' + row + ' currentWnum: ' + currentWnum + ' wNums[0]: ' + wNums[0] + ' wNums[1]: ' + wNums[1]);
  }
}

第一个 Logger.log() 的示例输出:

row: 8 currentWnum: 4 wNums[0]: 3 wNums[1]: 13
...
row: 12 currentWnum: 4 wNums[0]: 4 wNums[1]: 13
...
row: 18 currentWnum: 4 wNums[0]: 3 wNums[1]: 13
...
row: 20 currentWnum: 4 wNums[0]: 3 wNums[1]: 13

Full 第二个 Logger.log() 的输出:

row: 106 currentWnum: 4 wNums[0]: 4 wNums[1]: 5
row: 138 currentWnum: 4 wNums[0]: 2 wNums[1]: 4
row: 139 currentWnum: 4 wNums[0]: 2 wNums[1]: 4
row: 151 currentWnum: 4 wNums[0]: 3 wNums[1]: 4

如您所见,它跳过了所有行,除了 currentWnum 等于 wNum[1] 的行和 wNum[1] 等于 5 的行。我们测试了它替换 wNums[1]带有静态数字的条件语句,并且它的行为正确。有什么想法吗?

【问题讨论】:

    标签: javascript google-apps-script google-apps


    【解决方案1】:

    您似乎在 字符串 上使用了&lt;=。我希望这些按字典顺序进行比较 - 例如,“13”小于“4”。

    我建议您在执行任何比较之前将所有值转换为数字(例如使用parseInt)。这将适用于 wNumscurrentWnum 中的每个元素。

    【讨论】:

    • 看来问题已经解决了,谢谢。我们怀疑这可能是字符串与数字的问题,但没有采用这种方法,因为我们已经使用 isNaN() 函数检查了值是否为数字。 parseInt() 会对 isNaN() 不检查的值做些什么吗?
    • @BTEVC: isNaN 只是检查它是否是数字“不是数字”值(用于虚数等)。尽管有名字,但这并没有真正检查它是否是数字类型的值。字符串不是“非数字”值,尽管它不是数字。我意识到这很令人困惑:)
    • 知道了,我们自己也发现了这一点,通过阅读有关这两个函数的更多细节。感谢您的帮助! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多