2012-02-02 13 views
8

Zastanawiałem się, czy istnieje sposób w javascript aby mieć logikę podobną do rachunku zlewają się w sql, która zwraca dane w określonej kolejności jak poniżej:Jak mimick funkcjonalność rachunku SQL zlewają się w JavaScript

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

Czy istnieje elegancki sposób radzenia sobie z wartościami pustymi w JavaScript, w ten sam sposób, w jaki sql zwraca wyniki w powyższym oświadczeniu?

wiem, że mogłyby mieć technicznie instrukcję switch, ale wymagałoby to jakiś niepotrzebny kod

dziękuję.

+0

możliwe duplikat (http://stackoverflow.com/questions/476436/null-coalescing-operator -for-javascript) – l0b0

Odpowiedz

10

Możesz użyć OR.

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

dzięki, nie miałem pojęcia, że ​​możesz użyć i tego operatora! –

3

Można użyć "falsy" wartości i operator || logicznej (OR):

var foo = bar || baz; 

Przede byłoby przypisać wartość bar do foo jeśli bar ocenia na "truthy" wartości i baz inaczej (np jeśli bar jest niezdefiniowany, null, false itd.).

+0

Dziękuję, że to zadziałało bardzo dobrze –

3

Problem z || to wartości, takie jak 0, które mogą być pożądane. Możesz napisać własną funkcję javascript, aby symulować 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 
} 

które można następnie wywołać jak oczekiwano [? Zerowej operatora koalescencyjnego język JavaScript]

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

'null! == undefined' byłoby prawdą ... więc może również chcieć dodać niezdefiniowaną opcję. –

Powiązane problemy