Проверить несколько переменных на одно и то же условие? - PullRequest
0 голосов
/ 05 сентября 2018

При работе с операторами if в JavaScript мне пришлось написать несколько довольно длинных условий. Вот пример, где три числа должны быть 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 голосов
/ 05 сентября 2018

Вместо того, чтобы иметь дело с несколькими значениями в качестве отдельных переменных, вы можете поместить их в массив. В случае проверки / фиксации значений вы можете получить дальнейшее использование, используя Math.min и Math.max:

if (Math.min(num1, num2, num3) < 0 || Math.max(num1, num2, num3) > 100) {
  return "No bueno, dude!"
} else {
  return "I dig it."
}
0 голосов
/ 05 сентября 2018

Вы можете создать массив из 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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...