2012-02-02 1 views
8

мне было интересно, если есть способ в JavaScript, чтобы иметь логику, подобное заявление Coalesce в SQL, который будет возвращать данные в определенном порядке, как это:Как подражать функциональности заявления SQL Coalesce в Javascript

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

Есть ли элегантный способ справиться с нулевыми значениями в Javascript, так же, как sql возвращает результаты в вышеуказанный оператор?

я знаю, что я мог технически иметь переключатель заявление, но это потребовало бы некоторые, возможно, ненужного кода

Спасибо.

+0

возможно дубликат (http://stackoverflow.com/questions/476436/null-coalescing-operator -for-javascript) – l0b0

ответ

10

Вы можете использовать ИЛИ.

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

спасибо, я понятия не имел, что вы можете использовать, и такого оператора! –

3

Вы можете использовать «falsy» значения и || оператора (логическое ИЛИ):

var foo = bar || baz; 

Выше было присвоить значение bar к foo если bar вычисляется в «truthy» значение и baz в противном случае (например, если bar не определено, null, false и т.п.).

+0

Спасибо, что это сработало очень хорошо –

-1

Вот ссылка на основном тот же вопрос: Is there a "null coalescing" operator in JavaScript?

вызов нуль коалесцирующий Это. В C# существует нулевой оператор коалесценции "??" и на это ссылался первоначальный вопросник связанного вопроса.

3

Проблема с || - это значения, такие как 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 
} 

Что вы могли бы назвать, как и ожидалось: [? Нулевой оператор коалесцирующем для JavaScript]

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

'null! == undefined' будет true ... так что вы можете также добавить неопределенный чек. –

Смежные вопросы