javascript - 使用条件语句在 Javascript 中的不同 for 循环之间进行选择

标签 javascript for-loop if-statement

根据特定条件,我希望执行两个不同的 for 循环之一。所以在下面的示例中,我希望 console.log 在 a > b 时返回降序数字,在 b > a 时返回升序数字。我对这不起作用一点也不感到惊讶,但它让你知道我在追求什么。

for (if (a > b) {(i = 2; i > 0; i--)} else {(i = 0; i < 2; i++)} {
console.log(i);
};

显然,我可以通过让 if-else 在两个完整且独立的循环之间进行选择来解决这个问题,每个循环都有自己的 console.log(i) 代码块,但在我处理的情况下,这将涉及复制一个巨大的代码量。

最佳答案

 for(let i = a > b ? 2 : 0 ; a > b ? i > 0 : i < 2; a > b ? i-- : i++)
   console.log(i);

您必须将条件移动到每个表达式中。或者在它自己的函数中移动 body:

 function body(i) {
   console.log(i);
 }

 if (a > b) {
   for(i = 2; i > 0; i--) body(i);
 } else {
   for(i = 0; i < 2; i++) body(i);
}

或者功能方式:

 const maybe = (condition, op) => arg => condition ? op(arg) : arg;
 const range = (start, end) => Array.from({ length: end - start }, (_, i) => start + i);

maybe(a > b, it => it.reverse())(range(0, 2)).forEach(console.log);

关于javascript - 使用条件语句在 Javascript 中的不同 for 循环之间进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52706308/

相关文章:

javascript - 如何从jsondata中获取key的值

java - 使用 For 循环识别字符串中的数字

javascript - 在javascript中打印对象数组并在html标签中打印

java - 解析 JSON 时如何替换 System.out.println 作为返回?

algorithm - 伪代码:输入3个整数,乘以最大的2

javascript - 文本选择在alert()中可见,但在html()中不可见

javascript - iOS 7+ 向后滑动手势与 stateChange 动画冲突

javascript - 包含div的 float 菜单栏(js)

java - 如何将随机 int 转换为 String 以在 if/else 中使用?

html - 针对 IE 和 !IE