Ищите сокращенный способ JS для оценки наличия нескольких состояний объекта / объекта и установки в качестве bool - PullRequest
0 голосов
/ 04 апреля 2019

Итак, у меня много состояний, которые мне нужно установить на основе присутствия нескольких объектов и состояний:

В данный момент я просто делаю классическое выражение if, а затем проверяю на неопределенность.

let show_x = false;

if (some_object_presence !== 'undefined' || some_other_object_presence !== 'undefined' || some.other.object_presence !== 'undefined' ) {
    show_x = true;
}
...

Это похоже на очень долгий путь. Есть ли сокращенная версия, которую я могу установить так:

let show_y = some_object_presence || some_other_object_presence || some.other.object_presence;

Мне нужно, чтобы состояние show_y было логическим значением. Я действительно думал о создании промежуточных тестов для каждого из состояний объекта, которые я ищу, но это может просто усложнить ситуацию, например.

let some_object_presence = object_qwe ? true : false;
let some_other_object_presence = object_asd ? true : false;
let some_third_object_presence = object_zxc ? true : false;

let show_z = some_object_presence || some_other_object_presence || some_third_object_presence;

Любые идеи будут полезны

1 Ответ

1 голос
/ 04 апреля 2019

Вы можете просто привести его к логическому значению с двойным отрицанием. Если какой-либо из ваших объектов определен, он считается истинным, поэтому вы можете просто указать show_z в качестве вашего объекта.

let show_z = !!(some_object_presence || some_other_object_presence || some_third_object_presence);

Не совсем правильно, но вкратце вы можете рассмотреть: Пустые строки "", 0 0, пустой массив [] и неопределенные переменные var x как ложные. Все остальное можно считать правдой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...