Написание троичного выражения для соответствия конкретному If / Else в JavaScript

1

Выполняя ETL для получения данных из базы данных Sybase в бэкэнд MongoDB, я могу это сделать:

if (data.hire_date) staffProfile.hireDate = data.hire_date;

Этот метод предотвращает заполнение нулей в MongoDB. Если data.hire_date имеет значение, оно будет опущено в staffProfile.hireDate. Однако, если нет значения, он эффективно игнорируется.

Теперь я хотел бы создать тот же результат с тройственным выражением. Что-то вроде:

staffProfile.hireDate = data_hireDate ? data_hireDate : null;

Тем не менее, я не хочу использовать null здесь, потому что когда я это делаю, я получаю кучу нулей в базе данных. Мой вопрос действительно сводится к двум вещам: что происходит в моем первом примере, с случаем "если", когда значение не найдено? Является ли результат undefined? Что я мог бы использовать в тройном синтаксическом примере для эффективной записи той же условной проверки - вплоть до того, что передается, когда значение не существует?

Это будет эквивалентное выражение для моего первого примера?

staffProfile.hireDate = data_hireDate ? data_hireDate : undefined;
  • 0
    staffProfile.hireDate: staffProfile.hireDate ? Этот синтаксис не имеет смысла - двоеточие должно идти после знака вопроса в троице, а не до
  • 0
    Если вы не определили это, оно не определено. Что ожидает БД и / или ваш код, если нет значения, только вы это знаете.
Показать ещё 1 комментарий
Теги:
ternary-operator

2 ответа

2
Лучший ответ

1. "Что действительно происходит в моем первом примере, с случаем" если ", когда значение не найдено? Является ли результат undefined?"

Да, это будет undefined, если условие не будет передано, а свойство объекта не создано и ничего не назначено ему:

const data = {};
const staffProfile = {};

if (data.hire_date) staffProfile.hireDate = data.hire_date;

console.log("data:", data);
console.log("staffProfile.hireDate:", staffProfile.hireDate);

2. "Что я могу использовать в тройном синтаксическом примере для эффективной записи той же условной проверки - вплоть до того, что передается, когда значение не существует?"

Вы можете добиться абсолютно одинакового результата таким образом:

const data = {};
const staffProfile = {};

data.hire_date ? staffProfile.hireDate = data.hire_date : null;

console.log("data:", data);
console.log("staffProfile.hireDate:", staffProfile.hireDate);

И не так (в этом случае он станет null):

const data = {};
const staffProfile = {};

staffProfile.hireDate = data.hire_date ? data.hire_date : null;

console.log("data:", data);
console.log("staffProfile.hireDate:", staffProfile.hireDate);
0

если date_hireDate выйдет, он будет присвоен staffProfile.hireDate. Синтаксис ниже - это то, что вы хотите.

staffProfile.hireDate = data_hireDate && data_hireDate

Однако это не имеет смысла. date_hireDate перед && operator должно быть условием типа date_hireDate === something.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню