我需要能够从开头或结尾动态读取数组,并从该位置向上或向下工作。
这是由 bool 值决定的:var startFromBeginOfChat = true;
我尝试在 for 循环内传递一条语句,如下所示:
for (var i = startFromBeginOfChat ? (parsedChat.messages.length - 1):0;
startFromBeginOfChat ? (i >= 0):(i < parsedChat.messages.length);
startFromBeginOfChat ? i--:i++)
还有其他方法可以动态触发一个或另一个 for 循环吗?我当然可以将整个逻辑存储到 if/else
语句中,但由于 for 循环内的逻辑完全相同,所以我宁愿不这样做。
最佳答案
正如评论中所述,如果需要向后解析列表,可以预先反转列表。整个最终代码如下:
if (!startFromBeginOfChat) parsedChat.messages.reverse();
for (var i = 0; i < parsedChat.messages.length; i++) {
// code
}
如果您需要原始列表再次按顺序排列,您可以在最后再次反转它(可能更有效,但语义更少),或者在最初反转它之前使用 parsedChat 创建一个新副本。 messages.slice()
(我认为更具可读性)。
关于javascript - 动态决定for循环的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32555198/