编写三元表达式以匹配 JavaScript 中的特定 If/Else

Writing Ternary Expression to Match Specific If/Else in JavaScript

在执行 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,因为当我这样做时,我最终会在数据库中得到一堆空值。我的问题实际上归结为两件事:在我的第一个示例中,在 "if" 情况下,当找不到值时,实际上发生了什么?结果是undefined?我可以在三元语法示例中使用什么来有效地编写相同的条件检查 - 一直到值不存在时传递的内容?

这是否是与我的第一个示例等效的表达式?

staffProfile.hireDate = data_hireDate ? data_hireDate : undefined;

如果date_hireDate退出,将分配给staffProfile.hireDate。下面的语法就是你想要的。

staffProfile.hireDate = data_hireDate && data_hireDate

然而,它没有意义。在 && 运算符之前的 date_hireDate 应该是 date_hireDate === something.

这样的条件

1. "What is effectively happening in my first example, with the "if"情况下,当找不到值时?结果是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. "What could I use in the ternary syntax example to effectively write the same conditional check - right through to what is passed when the value doesn't exist?"

您可以通过这种方式获得完全相同的结果:

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);