我想在达到特定限制后将计数值重置为 0。并返回值(originalCount - limit)。
我尝试过 if
和 for
循环,但无法达到我想要的效果。
//payload is an array of bytes//
if (payload[0] == 33) {
result.PayloadTtype = 'Vehicle Count';
if (payload[2] > 80) {
payload[2] -= 80; //Sensor Reboot due to exceeding limit
result.Count = payload[2];
}else {
result.Count = payload[2];
}
}
我可以返回最多 159 的正确值,但是一旦它在病房上超过 160,它就会打印 (80,81....)
。我希望它从 0 重新开始,即使是 80n (n = 1,2,3...)
的倍数。
最佳答案
将payload[2]
除以80
:
if (payload[0] == 33) {
result.PayloadTtype = 'Vehicle Count';
if (payload[2] > 80) {
payload[2] %= 80; //Sensor Reboot due to exceeding limit
result.Count = payload[2];
}else {
result.Count = payload[2];
}
}
您还可以将无条件语句(result.Count
的赋值)移出 if
语句,在这种情况下,您甚至不需要 >if
(模数将使小于 80
的值保持不变):
if (payload[0] == 33) {
result.PayloadTtype = 'Vehicle Count';
payload[2] %= 80;
result.Count = payload[2];
}
如果你真的想让事情变得紧凑,你甚至可以这样做(尽管我认为这会损害可读性):
if (payload[0] == 33) {
result.PayloadTtype = 'Vehicle Count';
result.Count = payload[2] %= 80;
}
关于javascript - 超过n次限制后从0重新开始计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57657996/