2012-02-02 8 views
8

Me preguntaba si hay una manera en javascript para tener una lógica similar a la declaración se unen en SQL que devuelve los datos en un orden determinado de esta manera:Cómo imitar la funcionalidad de la instrucción SQL Coalesce en Javascript

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

¿hay una manera elegante de tratar con valores nulos en Javascript, de la misma manera que SQL devuelve resultados en la declaración anterior?

que sé que técnicamente podría tener una sentencia switch, pero esto requeriría algún código posiblemente innecesaria

Gracias.

+0

posible duplicado de (http://stackoverflow.com/questions/476436/null-coalescing-operator -for-javascript) – l0b0

Respuesta

10

Puede usar un quirófano.

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

gracias, no tenía idea de que pudieras usar y operador así! –

3

Se pueden utilizar valores "Falsy" y la || operador (operador lógico OR):

var foo = bar || baz; 

Por encima de asignaría el valor de bar a foo si bar se evalúa como un valor "Truthy" y baz de otro modo (por ejemplo, si bar es indefinido, nulo, falso, etc.).

+0

Gracias, esto funcionó muy bien –

3

El problema con || son valores como 0, que pueden ser deseados. Puede escribir su propia función de JavaScript para simular 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 
} 

que luego se podría llamar como se esperaba: [? Operador coalescente nula para Javascript]

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

'null! == undefined' sería cierto ... por lo que es posible que también desee agregar un control indefinido. –

Cuestiones relacionadas