根据特定条件,我希望执行两个不同的 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/