2012-02-02 24 views
8

Tôi đã tự hỏi nếu có một cách trong javascript để có logic tương tự như các tuyên bố liên hiệp trong sql mà sẽ trả về dữ liệu theo một thứ tự quy định như thế này:Làm thế nào để mimick các chức năng của câu lệnh SQL liên hiệp trong Javascript

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

là có một cách thanh lịch để đối phó với các giá trị null trong Javascript, cùng một cách mà sql trả về kết quả trong tuyên bố trên?

tôi biết tôi về mặt kỹ thuật có thể có một câu lệnh switch, nhưng điều này sẽ đòi hỏi một số mã có thể không cần thiết

Cảm ơn bạn.

+0

thể trùng lặp của (http://stackoverflow.com/questions/476436/null-coalescing-operator -for-javascript) – l0b0

Trả lời

10

Bạn có thể sử dụng OR.

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

cảm ơn, tôi không có ý tưởng bạn có thể sử dụng và điều hành như thế! –

3

Bạn có thể sử dụng giá trị "falsy" và || điều hành (logic OR):

var foo = bar || baz; 

Trên sẽ gán giá trị của bar-foo nếu bar để đánh giá một giá trị "truthy" và baz khác (ví dụ như nếu bar không xác định, null, sai, v.v.).

+0

Cảm ơn bạn điều này đã làm việc rất tốt –

-1

Dưới đây là một liên kết đến cơ bản cùng một câu hỏi: Is there a "null coalescing" operator in JavaScript?

Đó của cuộc gọi vô coalescing. Trong C#, có một toán tử kết hợp null "??" và đó là điều người hỏi ban đầu của câu hỏi được liên kết đề cập đến.

3

Sự cố với || là các giá trị như 0, có thể mong muốn. Bạn có thể viết hàm javascript của riêng bạn để mô phỏng 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 
} 

Mà bạn sau đó có thể gọi như mong đợi: [? Điều hành coalescing null cho javascript]

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

'null! == undefined' sẽ là true ... vì vậy có thể muốn thêm một kiểm tra không xác định là tốt. –

Các vấn đề liên quan