在相同条件下检查多个变量?

时间:2018-09-05 02:27:10

标签: javascript if-statement

在JavaScript中使用if语句时,我不得不写出一些相当冗长的条件。这是一个示例,其中三个数字必须为0-100:

if ((num1 > 100 || num1 < 0) || (num2 > 100 || num2 < 0) || 
    (num3 > 100 || num3 < 0)) {
    return 'One of these is invalid';
} else {
    return 'Ok, we are good.';
}

我不知道是否可以缩短时间,我尝试搜索类似的问题,但找不到任何东西。但是可以在JavaScript中执行类似的操作吗? (或者,如果不是使用JavaScript,是否可以使用其他语言?)

if (num1, num2, num3 > 100 || num1, num2, num3 < 0) {
    return 'One of these is invalid';
} else {
    return 'Ok, we are good.';
}

2 个答案:

答案 0 :(得分:1)

您可以从num s创建一个数组,然后检查数组中的every项目是否通过测试:

return [num1, num2, num3].every(num => num <= 100 && num >= 0)
? 'Ok, we are good.';
: 'One of these is invalid'

const verify = (num1, num2, num3) => (
  [num1, num2, num3].every(num => num <= 100 && num >= 0)
    ? 'Ok, we are good.'
    : 'One of these is invalid'
);
console.log(verify(50, 50, 50));
console.log(verify(50, 100, 50));
console.log(verify(50, 101, 50));

如果偶然地,nums是传递给函数的参数,如上例所示,您可以立即使用 rest 语法从这些参数创建一个数组:

const verify = (someOtherArg, ...arr) => (
  arr.every(num => num <= 100 && num >= 0)
    ? 'Ok, we are good.'
    : 'One of these is invalid'
);
console.log(verify('someArg', 50, 50, 50));
console.log(verify('someArg', 50, 100, 50));
console.log(verify('someArg', 50, 101, 50));

答案 1 :(得分:1)

您可以将它们放入数组中,而不是将多个值作为单个变量处理。在验证/钳位值的情况下,您实际上可以使用Math.minMath.max来进一步:

if (Math.min(num1, num2, num3) < 0 || Math.max(num1, num2, num3) > 100) {
  return "No bueno, dude!"
} else {
  return "I dig it."
}