javascript - if 对一个值声明多个条件而不重复值

标签 javascript if-statement conditional-statements

我想知道是否有一种方法可以检查同一变量或值的多个条件而不重复该值。

例如,如果我有变量 keyCode,并且我想检查它是否大于 102,或小于 48,或在 65 到 57 之间,或在 70 到 97 之间,我必须这样写:

var keyCode = // some value;
if(
    keyCode > 102 ||
    keyCode < 48 ||
    (keyCode > 57 && keyCode < 65) ||
    (keycode > 70 && keyCode < 97)
) {
    // do something
}

如您所见,我在 if 条件中写入了 keyCode 6 次。如果条件更复杂(这个条件只是排除所有非十六进制字符),那么它可能会更加重复。

我想知道是否有一种方法可以简化这个过程。也许是这样的:

if(
    keyCode > 102 || < 48 || (> 57 && < 65) || (> 70 && < 97)
) {
    // do something
}

其中您可以简单地省略变量名称并将许多条件放在单个变量上。这就像this question的相反,其中询问者想知道是否有一种方法可以根据单个条件检查多个变量。

我现在正在使用 JS 进行编码,但是如果您了解其他语言的实现,这在将来也可能会有所帮助。我认为这会很容易实现,因为我经常使用它,但我惊讶地发现我根本找不到有关此类语言功能的任何信息。

最佳答案

据我所知,简化此操作的唯一方法是创建具有有意义名称的单独函数,例如:

function inRange(value, min, max) {
    return (value > min) && (value < max);
}
function outRange(value, min, max) {
    return (value < min) || (value > max);
}

那么你的情况将如下所示:

if (outRange(keyCode, 48, 102) || inRange(keyCode, 57, 65) || inRange(keyCode, 70, 97) ) {
    ...
}

这更容易理解一点,因为你看到了最初的意图,而不是不同的 > <并尝试理解它的实际含义

另一种方法是创建对象 rangeChecker/notInRangeChecker ,然后创建不同范围检查器的数组并创建函数 checkValueAtLeastInOneRange(keyCode, rangesArray)

关于javascript - if 对一个值声明多个条件而不重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35045267/

相关文章:

javascript - 谷歌应用脚​​本: How to remove specific characters from a 2D array

if-statement - 为什么不评估此 Cobol 代码中的第二个 if 语句 (OpenCOBOL)?

reactjs - 如何在 React Js 中有条件地隐藏和显示输入

python - 在 python 三元中使用 continue?

r - R中的矢量化条件输出(可能使用purrr)?

javascript - 如何在react中将arrow函数转换为ES5函数

javascript - 如何在函数闭包内访问数组?

javascript - 如果它已经注入(inject)另一个工厂,则不会填充工厂字段

javascript - Js if语句不能正常工作

if-statement - FLWOR 表达式不完整 : expecting 'return'