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

9
我想知道在javascript中是否有类似于sql中coalesce语句的逻辑,可以按照指定顺序返回数据,如下所示:
Select top 1 Coalesce(ColA, ColB, "No Data Found") from TableA;

在JavaScript中是否有一种优雅的方式来处理空值(null values),就像SQL在上述语句中返回结果一样?

我知道我可以使用switch语句来处理,但这可能需要一些不必要的代码。

谢谢。


可能是JavaScript的null合并运算符?的重复问题。 - l0b0
4个回答

11

你可以使用OR操作符。

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

5
< p >使用< code >||的问题在于像< code >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 会返回 true...所以可能需要添加一个 undefined 检查。 - Kevin Nelson

3
您可以使用“假值”和||运算符(逻辑或):
var foo = bar || baz;

上述代码会将bar的值赋给foo,如果bar的值为真值(truthy),否则将baz的值赋给foo(例如,如果bar是未定义的、null、false等)。

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接