编写三元表达式以匹配 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);
在执行 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);