动态决定for循环的顺序

时间:2015-09-13 22:34:39

标签: javascript arrays

我需要能够从开始或结束动态读取数组,并从该位置开始或向下工作。

这是由布尔值决定的:var startFromBeginOfChat = true;

我试图在for循环中传递一个语句,如下所示:

for (var i = startFromBeginOfChat ? (parsedChat.messages.length - 1):0; 
startFromBeginOfChat ? (i >= 0):(i < parsedChat.messages.length); 
startFromBeginOfChat ? i--:i++) 

有没有其他方法动态触发一个或另一个循环?我当然可以将整个逻辑存储到if/else语句中,但由于for循环内部的逻辑完全相同,我宁愿不这样做。

1 个答案:

答案 0 :(得分:0)

如评论中所述,如果您需要向后解析,您可以事先撤消列表。整个最终代码如下:

if (!startFromBeginOfChat) parsedChat.messages.reverse();

for (var i = 0; i < parsedChat.messages.length; i++) {
   // code
}

如果您需要将原始列表再次按顺序排列,您可以在最后再次将其反转(可能更高效,但语义更少),或者在您最初使用parsedChat.messages.slice()反转它之前创建新副本(在我看来更具可读性)。