javascript - 动态决定for循环的顺序

标签 javascript arrays

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

这是由 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/

相关文章:

javascript - HTML DIV 不显示元素调整大小

c++ - 在 C++ 中查找数组中元素的数量

javascript - 如何在ajax中获取数组的值

javascript - 循环闭合 - 我把它放在哪里?

javascript - 如何使用javascript多次访问一个页面?

javascript - 如何读取事件数据属性

javascript - PhotoSwipe 无法在移动设备上运行

javascript - Controller 之间共享数据未按预期工作

javascript - 尽管有模 if 语句,For 循环仍推送到数组两次

javascript - 错误类型错误 : Cannot read property 'ngInjectableDef' of undefined