javascript - 在 JavaScript 中使用多个 and/or 选项缩短 if 条件

标签 javascript

我有一段代码(我认为它非常低效且糟糕;不过我可能是错的。),它检查变量是否在由其他变量确定的范围内,如下所示;

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;
    }
}

假设您有两个具有相应长度的数组,或者只有一个具有 xy 属性的对象,您可以使用 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/

相关文章:

javascript - 在完整的浏览器窗口中显示图像,但仅在图像太大时才按比例缩小

javascript - .innerHTML 显示为未定义

javascript - 使用 span 的内容初始化数组

javascript - 未知数量变量的谷歌圆环图

JavaScript 作用域混淆

javascript - 在 javascript/typescript 中绘制形状并填充颜色

Javascript 间隔不起作用

javascript - 需要右对齐 Bootstrap Navbar 但左对齐它的子菜单

javascript - 在 JS 中使用 for 循环创建多个变量并为其赋值

javascript - Firefox 给出事件对象的错误