#javascript
Вопрос:
Я хочу сохранить undefined
значение, если закреплено, на самом деле не определено, в противном случае я хочу установить значение через знак равенства равным 1, если закреплено верно, и 0, если это ложь. Я придумал, что это работает, но я продолжаю смотреть на это, и мне кажется, что это должно быть проще.
const resultingValue = pinned === undefined ? undefined : pinned ? 1 : 0;
Чего я хочу, так это:
если закреплено значение не определено, верните значение не определено, если закреплено значение true, верните 1, если закреплено значение false, верните 0 в противном случае, верните 0;
Комментарии:
1.
typeof pinned === 'boolean' ? pinned : undefined
2. У вас уже есть эквивалентные ответы, но я рекомендую
pinned === undefined ? undefined : Number(pinned)
для удобства чтения.3. Спасибо @Ry-, мне пока больше всего нравится ваш ответ.
Ответ №1:
Вы можете проверить тип и вернуть либо количество логических значений, либо undefined
.
const resultingValue = typeof pinned === 'boolean' ? pinned : undefined;
Ответ №2:
Работает для: true
, false
, undefined
, 0
, 1
const resultingValue = pinned 1 ? pinned: undefined;
Ответ №3:
Используйте таблицу подстановки для каждого значения. Это undefined
может быть опущено, так как оно будет производиться undefined
по умолчанию:
const lookup = {true: 1, false: 0}; const convert = value =gt; lookup[value]; console.log(convert(true)); console.log(convert(false)); console.log(convert(undefined)); console.log(convert());
При желании это можно сократить до одной функции:
const convert = value =gt; ({true: 1, false: 0}[value]); console.log(convert(true)); console.log(convert(false)); console.log(convert(undefined)); console.log(convert());