2012-02-02 8 views
8

mi chiedevo se c'è un modo in javascript per avere una logica simile alla dichiarazione COALESCE in SQL che restituirà i dati in un ordine specifico come questo:Come mimare la funzionalità di SQL Coalesce in Javascript

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

esiste un modo elegante per gestire i valori null in Javascript, allo stesso modo in cui sql restituisce i risultati nell'istruzione sopra riportata?

So che avrei potuto tecnicamente avere un'istruzione switch, ma questo richiederebbe un certo codice forse non necessaria

Grazie.

+0

possibile duplicato (http://stackoverflow.com/questions/476436/null-coalescing-operator -per-javascript) – l0b0

risposta

10

È possibile utilizzare un OR.

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

grazie, non avevo idea che potessi usare e operatore del genere! –

3

È possibile utilizzare valori "falsy" e la || dell'operatore (OR logico):

var foo = bar || baz; 

Sopra sarebbe assegnare il valore di bar-foo se bar restituisce un valore "truthy" e baz altrimenti (per esempio, se bar non è definito, null, falso ecc.).

+0

Grazie a questo ha funzionato molto bene –

-1

Ecco un link per fondamentalmente la stessa domanda: Is there a "null coalescing" operator in JavaScript?

del Quella chiamata null coalescenza. In C#, c'è un operatore di coalesce nullo "??" ed è a questo che si riferiva il richiedente originale della domanda collegata.

3

Il problema con || è valori come 0, che può essere desiderato. Potresti scrivere la tua funzione javascript per simulare 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 
} 

cui si potrebbe quindi chiamare come previsto: [? Operatore null coalescenza per javascript]

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

'null! == undefined' sarebbe vero ... quindi potresti voler aggiungere anche un controllo indefinito. –

Problemi correlati