如何在 Javascript 中模拟 SQL Coalesce 语句的功能

Posted

技术标签:

【中文标题】如何在 Javascript 中模拟 SQL Coalesce 语句的功能【英文标题】:How to mimick the functionality of the SQL Coalesce statement in Javascript 【发布时间】:2012-02-25 14:01:13 【问题描述】:

我想知道 javascript 中是否有一种方法可以使逻辑类似于 sql 中的 coalesce 语句,它将按指定的顺序返回数据,如下所示:

Select top 1 Coalesce(ColA, ColB, "No Data Found") from TableA;

有没有一种优雅的方式来处理 Javascript 中的 null 值,就像上面语句中 sql 返回结果的方式一样?

我知道我在技术上可以有一个 switch 语句,但这需要一些可能不必要的代码

谢谢。

【问题讨论】:

null coalescing operator for javascript? 的可能重复项 【参考方案1】:

您可以使用“假”值和|| 运算符(逻辑或):

var foo = bar || baz;

如果bar 评估为“真实”值,则将bar 的值分配给foo,否则将baz 分配给baz(例如,如果bar 未定义、null、false 等)。

【讨论】:

【参考方案2】:

您可以使用 OR。

 var someVar = null || value;
 var otherVar = null || variableThatEvaluatesToNull || functionThatEvaluatesToNull() || value;

【讨论】:

【参考方案3】:

这是一个基本相同问题的链接:Is there a "null coalescing" operator in JavaScript?

这称为空值合并。在 C# 中,有一个空合并运算符“??”这就是链接问题的原始提问者所指的内容。

【讨论】:

【参考方案4】:

|| 的问题是像0 这样的值,这可能是需要的。您可以编写自己的 javascript 函数来模拟 COALESCE。

function Coalesce() 
  var args = Coalesce.arguments;

  for (var i = 0; i < args.length; ++i) 
    if (null !== args[i])
      return args[i];
  

  return null;  // No non-null values found, return null

然后您可以按预期调用:

var myNonNullValue = Coalesce(null, objectA, objectB, "defaultValue");

【讨论】:

null !== undefined 是真的......所以可能还想添加一个未定义的检查。

以上是关于如何在 Javascript 中模拟 SQL Coalesce 语句的功能的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript模拟鼠标右键菜单

如何在 JavaScript 单元测试中模拟 localStorage?

如何在 javascript 类中模拟受保护的变量?

如何在 javascript 中模拟内部 JSON 对象?

如何在webview(android)中使用javascript(或不是javascript)模拟键盘事件以输入textarea

如何在 JavaScript 中模拟“类”? (有或没有第三方库)[关闭]