2014-03-27 3 views
1

(первого StackOverflow поста) Это является вопросом JavaScript, но я думаю, что логика применима в любом местеУкорачивания Множественного IF Условие того же переменного

Я задавался в течение длительного времени, об использовании, если заявление для сравнения несколько значения для одной и той же переменной без необходимости вводить переменную каждый раз; в частности, в отношении «больше, чем» и «меньше».

Конкретный пример, который я пытаюсь решить это:

var middle = 5; 
if(middle < 10 && middle > 0) { 
    //some stuff 
} 

Я ищу что-то вроде:

var middle = 5; 
if(middle (< 10 && > 0)) { 
    //the same stuff 
} 

Я проверил is-there-a-way-to-shorten-the-condition-if-it-always-compares-to-the-same-thing и if-statements-matching-multiple-values и if-statement-multiple-conditions-same-statement. Я не мог получить простой ответ на мой конкретный вопрос.

Последнее замечание: я не хочу создавать новую функцию «multiple if», которая принимает аргументы, а затем сравнивает их для переменной. Я ищу «встроенный» способ сделать это.

Спасибо, -Charles

+0

Сколько диапазонов сравнения ссылок вам действительно нужно? Обычно требуется только два. – zzzzBov

+4

Нет такого пути. Вы можете написать функцию-обертку, которая возвращает логическое значение, но вам все равно придется написать логику. – Nit

+0

Huh ...После некоторых (неудачных) попыток, я решил, что это не так просто, как я думал, сделать функцию обертки без использования eval(). Любые советы по этому вопросу? – goodguy5

ответ

4

Некоторые языки, как Python и Coffeescript (!, Который компилирует в JS) имеют прикованных сравнения:

if (0 < middle < 10) 

Однако Javascript не есть. Так же, как вы уже это делали, вам нужно будет ссылаться на переменную дважды:

if (0 < middle && middle < 10) 
+0

Спасибо, Берги. Это была информация, которую я искал. – goodguy5

0

Я ищу способ "встроенный", чтобы сделать это.

Javascript не поддерживает эту функцию. На самом деле, на большинстве языков нет, и Python - единственный известный пример, о котором я могу думать прямо сейчас, который делает это (вы можете написать 0 < middle < 10 там).

В Javascript, лучшее, что вы можете сделать, это использовать более короткий имя переменной

if(0 <= x && x < 10) 

Или абстрактные общие тесты в функции

if(between(0, x, 10)) 
+0

Это еще 4 персонажа, даже не считая пробела! : D –

+0

Это всего четыре символа, потому что «x» очень короткий. Если ваша переменная составляла 10 символов, тогда она стала бы явно короче. – goodguy5

1

Я не верю, что это возможно, для логического оператору необходимо, чтобы обе стороны оператора оценивали значение true или false.

Если у вас отсутствует сторона, утверждение не может быть оценено.

0

Право, не делать этого, но только ради него:

if (Math.min(10, Math.max(0, middle)) == middle) { 
    // middle is between 0 and 10 
} 
Смежные вопросы