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

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

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

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

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

谢谢。

【问题讨论】:

标签: javascript jquery coalesce


【解决方案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 是真的......所以可能还想添加一个未定义的检查。
        猜你喜欢
        • 1970-01-01
        • 2018-05-05
        • 2016-10-23
        • 2021-11-14
        • 2010-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多