这是我的第一个问题,大家好!
我想尽快编写条件以终止循环。
循环不起作用,但应该更快地终止循环:
for (
let i = 0;
transactionsSortedByTime[i].unixTime <= unixEndTime && i < listLength;
i++
) {}
循环工作:
for (
let i = 0;
i < listLength && transactionsSortedByTime[i].unixTime <= unixEndTime;
i++
) {}
到目前为止,我确信 A&B 和 B&A 的结果是相同的,但在不同的时间以错误的结果终止(当其中一个 {A 或 B} 是错误的时(。
我的问题是为什么第二个循环正确迭代而第一个循环没有。
在您的情况下,A & B
与B & A
不同,因为在第一个代码片段中,您正在访问transactionsSortedByTime
数组的i'th
索引,然后再检查i
是否小于listLength
。这样做会在i < listLength
为假时提供未定义。
因此,应在transactionsSortedByTime[i].unixTime <= unixEndTime
之前编写i < listLength
以确保您的代码不会尝试访问超出transactionsSortedByTime
数组范围的索引。
只需添加 ((,循环结构显然采用第一个表达式的布尔值,要解决这个问题,您必须添加括号,以便表达式获取 && 运算符的值:
for (
let i = 0;
(transactionsSortedByTime[i].unixTime <= unixEndTime && i < listLength);
i++
) {}