如何解决将for循环中的if语句重复放入一个干净的if语句中
考虑必须检查十亿个条件的情况,如何通过使用for循环将难看的,重复的if语句减少为干净,优雅的if语句。
这是我正在谈论的怪兽的一个例子:
if (
x === 0 && y === 1 ||
x === 2 && y === 3 ||
x === 4 && y === 5 ||
x === 6 && y === 7 ||
x === 8 && y === 9
) {
// do somethig...
}
解决方法
如果注释正确,并且测试中有一个简单的模式(例如偶数x,奇数y),则只需将该模式写入测试中即可。但是,如果没有,我希望这样的事情可以处理更一般的情况。现在,您可以以声明方式添加任意多个匹配条件。
const matches = [
[0,1],[2,3],[4,5],[6,7],[8,9],/* ... */
]
if (matches .some (([a,b]) => x == a && y == b)) {
// ...
}
Array.prototype.some
可用于替换||
加入的像这样的集合。如果您想通过&&
加入,则可以使用Array.prototype.every
。
当然,您的内部测试(这里为x == a && y == b
)可以是您想要的任何东西。
虽然您可以使用for
循环执行类似的操作,但我希望它的表达能力要低得多,而冗长得多。我不推荐。
最简单的方法就是减少Java语法的麻烦,而不是数学。在所有条件下,y
等于x+1
,x
是0
和8
之间的偶数。通常,如果x
被限制在最小和最大之间,您可以这样说:
minx = 0;
maxx = 8;
if (y === x + 1 &&
x >= minx &&
x <= maxx &&
x % 2 === 0) {
// some code...
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。