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

#javascript #if-statement

#javascript #if-оператор

Вопрос:

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

На данный момент я просто выполняю классическую инструкцию 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. ваш 'undefined' — это строка. вы действительно хотите проверить строковое значение? пожалуйста, добавьте некоторое возможное содержимое переменных.

2. Извините, это мой быстро напечатанный пример, но хороший улов! 🙂 Все переменные являются объектами, хотя может быть область для проверки длины массивов и, возможно, других загрузок по строке… Но на данный момент просто объекты!

Ответ №1:

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

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

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

Комментарии:

1. Не знал, что вы можете это сделать! Очень интересно!