Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   (bool ? num1 : num2) - как сделать такое для операции сравнения > ? (https://javascript.ru/forum/misc/37700-bool-num1-num2-kak-sdelat-takoe-dlya-operacii-sravneniya.html)

Owyn 02.05.2013 22:18

(bool ? num1 : num2) - как сделать такое для операции сравнения > ?
 
Есть конструкция (bool ? num1 : num2) которая в зависимости от значения bool вставляет в выражение либо num1 либо num2, так вот:

можно ли сделать так чтоб в зависимости от значение bool производилась либо операция > либо < ? (т.е. либо меньше либо больше)

(bool ? > : <) - такая штука не проходит никак ни с \ ни с " :write: через if получится гора дублированного кода на пол экрана, а такая штука очень бы помогла.

9xakep 02.05.2013 22:33

(5 > 7) ? alert('true') : alert('false');
(5 < 9) ? alert('true') : alert('false');

Owyn 02.05.2013 23:31

9xakep, это не то совсем.
Надо
bool = true;
5 (bool ? > : <) 7

чтоб получалось либо
5 < 7
либо
5 > 7

ksa 02.05.2013 23:41

Цитата:

Сообщение от Owyn
Надо
bool = true;
5 (bool ? > : <) 7

Ну если так прям надо! :D

var bool = true;
alert(eval(5+(bool ? '>' : '<')+7));


Более путний вариант...

var bool = true;
alert(bool ? 5>7 : 5<7);

ksa 02.05.2013 23:44

Цитата:

Сообщение от Owyn
через if получится гора дублированного кода на пол экрана

Это ты явно загнул...

Owyn 02.05.2013 23:49

Цитата:

eval
надож, работает :) а всего-то надо было eval вставить

rgl 03.05.2013 10:34

Вариант в качестве прикола:
function lt(a,b) { return a<b; }
function gt(a,b) { return a>b; }

var bool = true;

alert( ( bool ? gt : lt )( 5, 7 ) );

megaupload 03.05.2013 11:08

Цитата:

Сообщение от Owyn
через if получится гора дублированного кода на пол экрана

и действительно, пиши сразу на единичках и нулях

SV0L0CH 03.05.2013 11:29

Если так хочется странного то вот
function fn(cond, x, y){
 return [function(a,b){return a<b;}, function(a,b){return a>b;}][+cond](x,y);
}
alert(fn(confirm("Да?"), +prompt("x"), +prompt("y")));


Часовой пояс GMT +3, время: 09:34.