%运营商似乎无法在谷歌应用程序脚本中工作

时间:2012-12-26 15:29:52

标签: google-apps-script

我想计算A队和B队连续3场胜利的数量。似乎总是进入最后的ifs。不是当consecutivas等于3,6,9 ......

  var consecutivasA = 0;
  var consecutivasB = 0;
  var plusA = 0;
  var plusB = 0;

  for (var i = 2; i <= 30; i++) {
    var row = values[i];

      if (row[3] > row[4]) { 
        consecutivasA++;
        consecutivasB = 0;
      }
      else if (row[3] < row[4]) {
        consecutivasB++;
        consecutivasA = 0;
      }
      else {
        consecutivasA = 0;
        consecutivasB = 0;
      }

      if (consecutivasB % 3 == 0) { plusB++; } 
      if (consecutivasA % 3 == 0) { plusA++; }

3 个答案:

答案 0 :(得分:1)

在最终的ifs之前记录consecutivasA和B的值......我强烈怀疑由于早期的逻辑错误,你的值总是为零。

答案 1 :(得分:1)

我会采取另一种方式 - 而不是使用您提供的逻辑,我认为只是检查A队或B队的胜利总数是否可以被3整除(这不一定说明任何事情)如果胜利是连续),我会尝试以下方法:

运行你的数组并写一个if语句,检查Team A是否在特定的地方获胜。如果是,请检查它是否在n + 1和n + 2中获胜。如果是,则增加plus。

再次运行您的数组并编写一个if语句,检查B队是否在特定位置获胜。如果是,请检查它是否在n + 1和n + 2中获胜。如果是,则增加plusB。

注意:只检查数组中最后一个条目之前的两个条目,因为超出该条目会返回数组大小错误。

答案 2 :(得分:1)

当你这样做时,你也会在consecutivas为0时递增,因为0%3也是0.这个例子将示例数据的结果写入日志。

function consecutivasMod () {
  var consecutivasA = 0;
  var consecutivasB = 0;
  var plusA = 0;
  var plusB = 0;
  values=[
    [0,0,0,1,0],    [0,0,0,1,0],    [0,0,0,1,0],    [0,0,0,0,1],    [0,0,0,0,1],
    [0,0,0,0,1],    [0,0,0,0,0],    [0,0,0,0,0],    [0,0,0,0,0],    [0,0,0,0,2],
    [0,0,0,0,3],    [0,0,0,0,4],    [0,0,0,0,5],    [0,0,0,0,6],    [0,0,0,0,7],
     ]
  for (var i = 0; i < 15; i++) {
    var row = values[i];

     if (row[3] > row[4]) { 
       consecutivasA++;
       consecutivasB = 0;
     }
     else if (row[3] < row[4]) {
       consecutivasB++;
       consecutivasA = 0;
     }
     else {
       consecutivasA = 0;
       consecutivasB = 0;
     }

     if (consecutivasB>0&&(consecutivasB % 3) == 0) { plusB++; } 
     if (consecutivasA>0&&(consecutivasA % 3) == 0) { plusA++; }
  }
 Logger.log ("consecutivasA "+plusA);
 Logger.log ("consecutivasB "+plusB);
}