@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 выполнялось два раза

Заранее спасибо
  • Вопрос задан
  • 123 просмотра
Решения вопроса 2
dantothefuture
@dantothefuture
You sleep, she sleeps, they sleep, I... don't.
return (answer => answer % 1 ? -1 : answer)(value / n);

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

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

Но лучше оставьте, как есть.
Ответ написан
w3bsme
@w3bsme
Интересное хуже
let answer = value / n;
return (answer % 1 == 0) ? answer : -1;
Короче этого куска кода не может быть
Ответ написан
Пригласить эксперта
Ответы на вопрос 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
Если много условий, то не используй никакие операторы, подумай о человеке которому после тебя придется разбираться с тем что это выражение делает. Разработка это тебе не соревнование на то кто придумает более хитрый и непонятный код.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
XPOWER Одесса
от 3 000 до 5 500 $
Artezio Москва
от 160 000 до 220 000 ₽
26 февр. 2021, в 05:09
3000 руб./за проект
26 февр. 2021, в 04:16
3000 руб./за проект
26 февр. 2021, в 01:40
1000 руб./за проект