2012-12-26 57 views
1

我要计数的A队连续3胜的数量和B.它似乎总是给我最后的IFS。不是当consecutivas等于3,6,9 ......%运营商似乎没有在谷歌工作的Apps脚本

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++; } 

回答

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); 
} 
+0

就是这样,谢谢:) – Pepe

1

最终IFS前右登录consecutivasA和B的值......我强烈怀疑,你的价值观始终为零,由于先前的逻辑错误。

1

我会去这样做的另一种方式 - 而不是使用你提供我认为只是检查是否由A队或B队获胜的总数是被3整除(这并不一定说什么逻辑,关于是否连胜),我会尝试以下内容:

运行你的数组并写一个if语句来检查团队A是否赢得了某个特定的地方。如果是,请检查它是否在n + 1和n + 2中获胜。如果是这样,增加plusA。通过您的阵列

再次运行,写一个if语句检查,如果B队在一个特定的地方获胜。如果是,检查它是否在N + 1和N + 2赢得了为好。如果是这样,增加加B。

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

+0

谢谢,我认为这样做的同时,但你说一下我的方法是不正确的,通过把consecutivasA和B为0,当他们失去或领带,我发现了目标。 – Pepe