我有一段代码(我认为它非常低效且糟糕;不过我可能是错的。),它检查变量是否在由其他变量确定的范围内,如下所示;
if ((a >= (x.eq(0) && y.eq(0)) || (a >= x.eq(1) && y.eq(1)) ... || (a >= x.eq(n) && y.eq(n)))) {
// code here
}
(我可能在问题中弄错了括号的数量,但代码本身是有效的。)
其中 n 是数组 x 和 y 中的数字总数。显然,if 条件看起来非常非常大,我相信它未经优化且“糟糕”。 我可以用什么东西来缩短病情吗?如果上面的 block 不可读,我想要的伪代码是:
Check if a is between x(0) and y(0).
If true, do things.
Else check if a is between x(1) and y(1).
If true, do things.
Else check ... if a is between x(n) and y(n).
If true, do things.
Else do nothing.
最佳答案
您可以使用 for
循环,并在满足一个条件时退出。您需要对带有 a 和左右边框的范围检查使用正确的比较。
var i;
for (i = 0; i <= n; i++) {
if (x.eq(i) <= a && a <= y.eq(i)) {
// do something
break;
}
}
假设您有两个具有相应长度的数组,或者只有一个具有 x
和 y
属性的对象,您可以使用 Array#some
array.some(function (o, i) {
if (o.x <= a && a <= o.y) {
// do something
// update(o, i);
return true; // exit iteration
}
});
关于javascript - 在 JavaScript 中使用多个 and/or 选项缩短 if 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44542183/