#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. Не знал, что вы можете это сделать! Очень интересно!