【问题标题】:Writing Ternary Expression to Match Specific If/Else in JavaScript在 JavaScript 中编写三元表达式以匹配特定的 If/Else
【发布时间】:2018-10-13 00:30:11
【问题描述】:

在执行 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;

【问题讨论】:

  • staffProfile.hireDate: staffProfile.hireDate ? 这种语法没有意义 - 冒号应该出现在三进制问号之后,而不是之前
  • 如果你不定义它,它就是未定义的。如果没有价值,数据库和/或您的代码期望什么,只有您知道。
  • 在尝试分配值时使用=,而不是:

标签: javascript ternary-operator


【解决方案1】:

1. “在我的第一个示例中,在“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. “我可以在三元语法示例中使用什么来有效地编写相同的条件检查 - 直到值不存在时传递的内容?” em>

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

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

【讨论】:

    【解决方案2】:

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

    staffProfile.hireDate = data_hireDate && data_hireDate

    但是,这没有意义。 date_hireDate 之前的 && 运算符应该是类似 date_hireDate === something 的条件。

    【讨论】:

      猜你喜欢
      • 2019-03-31
      • 1970-01-01
      • 1970-01-01
      • 2013-12-10
      • 2020-11-10
      • 1970-01-01
      • 2016-12-13
      • 2015-07-05
      • 1970-01-01
      相关资源
      最近更新 更多