@The_good_game

Как сократить код, используя тернарный оператор?

Имеется две строчки, где value и n - любые два числа (value > n) :
let answer = value / n;
return (answer % 1 == 0) ? answer : -1;

Возможно ли здесь обойтись без переменной answer, чтобы записать всё выражение в одну строчку? Только без этого:
return (value / n % 1 == 0) ? value / n : -1; // не нужно, чтобы value / n выполнялось два раза

Заранее спасибо
  • Вопрос задан
  • 130 просмотров
Решения вопроса 1
return (answer => answer % 1 ? -1 : answer)(value / n);

Или со сжатием:

return(a=>a%1?-1:a)(value/n)

Но лучше оставьте, как есть.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
Можно всех обмануть, введя вместо переменной аргумент функции
return [value / n].map(x => x % 1 ? -1 : x)[0]

Если подумать, -1 возвращают всякие indexOf(), поэтому можно так:
let a = [];
return (a[value / n] = 1, a.indexOf(1));

Но это ещё длиннее ¯\_(ツ)_/¯
Ответ написан
@grinat
Если много условий, то не используй никакие операторы, подумай о человеке которому после тебя придется разбираться с тем что это выражение делает. Разработка это тебе не соревнование на то кто придумает более хитрый и непонятный код.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы