我想计算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++; }
答案 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);
}