2012-12-20 60 views
15

tôi có một đối tượng như thế này:Kiểm tra xem đối tượng là trống rỗng với JavaScript/jQuery

ricHistory = { 
    name1: [{ 
    test1: value1, 
    test2: value2, 
    test3: value3 
    }], 
    name2: [{ 
    test1: value1, 
    test2: value2, 
    test3: value3 
    }] 
}; 

Bây giờ tôi muốn kiểm tra xem ví dụ name2 rỗng với Javascript/jQuery. Tôi biết phương pháp hasOwnProperty. Nó hoạt động cho data.hasOwnProperty('name2') chỉ khi tên tồn tại hay không, nhưng tôi phải kiểm tra xem nó có trống không.

+0

Câu hỏi của bạn hỏi làm thế nào để kiểm tra xem một đối tượng là trống rỗng, nhưng cơ thể của câu hỏi của bạn hỏi làm thế nào để kiểm tra xem một mảng trống . Vui lòng cụ thể hơn cho người đọc trong tương lai. – Jared

+0

có thể trùng lặp của [Là đối tượng trống?] (Http://stackoverflow.com/questions/4994201/is-object-empty) – sierrasdetandil

Trả lời

6

Hãy thử điều này:

if (ricHistory.name2 && 
    ricHistory.name2 instanceof Array && 
    !ricHistory.name2.length) { 
    console.log('name2 is empty array'); 
} else { 
    console.log('name2 does not exists or is not an empty array.'); 
} 

Các giải pháp trên sẽ cho bạn biết richHistory.name2 tồn tại, là một mảng và nó không có sản phẩm nào.

+0

Tại sao không đặt tất cả ba kiểm tra trong một, lớn, nếu? –

2

Hãy thử chức năng này hữu ích:

function isEmpty(obj) { 
if(isSet(obj)) { 
    if (obj.length && obj.length > 0) { 
     return false; 
    } 

    for (var key in obj) { 
     if (hasOwnProperty.call(obj, key)) { 
      return false; 
     } 
    } 
} 
return true;  
}; 

function isSet(val) { 
if ((val != undefined) && (val != null)){ 
    return true; 
} 
return false; 
}; 
+0

isSet ?? –

+0

Xin lỗi!:) Đó là một chức năng hữu ích khác: P – stamat

+0

Cảm ơn rất nhiều vì hàm 'isEmpty' – terales

-2
if (ricHistory.name2 === undefined) { 
    //This is property has not been set (which is not really the same as empty though...) 
} 
56

bạn có thể làm điều này bằng jQuery.isEmptyObject()

Kiểm tra để xem nếu một đối tượng là trống rỗng (không chứa các thuộc tính).

jQuery.isEmptyObject(object) 

Ví dụ:

jQuery.isEmptyObject({}) // true 
jQuery.isEmptyObject({ foo: "bar" }) // false 

from Jquery

0

Bạn có thể rút ngắn isSet bằng cách làm này để thay thế:

function isSet(val) { return ((val != undefined) && (val != null));} 

Tôi tìm thấy nó dễ dàng hơn để chỉ trả lại boolean của statement bàn giao và sau đó trở về.

+0

điều này thực sự là một nhận xét cho câu trả lời này http://stackoverflow.com/a/13973962/3810453 – Zanshin13

3

Một cú pháp khác từ JQuery mà bạn không sử dụng Prototype hoặc tương tự và bạn thích sử dụng tiền tố $ chứ không phải jQuery;

$.isEmptyObject(object) 
0

tôi đi như thế này tất cả các thời gian trong mã của tôi:

Giả sử điều khiển của tôi trả về một cái gì đó như dưới đây:

$return['divostar'] = $this->report->get_additional_divostar_report($data); 
$return['success'] = true; 
return response()->json($return); 

Trong Jquery, tôi sẽ kiểm tra như dưới đây:

if (jQuery.isEmptyObject(data.divostar)){ 
     html_result = "<p id='report'>No report yet</p>"; 
     $('#no_report_table').html(html_result).fadeIn('fast'); 
} 
0

Bạn cũng có thể sử dụng thành phần này object-empty có thể tái sử dụng để xác định xemTham chiếutrống.

Ví dụ:

empty([]) // => true 
empty({}) // => true 
empty(1) // => false 
empty('') // => false 
empty('foo') // => true 

Cách hoạt động:

function isEmpty(obj: any): boolean { 
    for (const n in obj) if (hasOwnProperty(obj, n) && obj[n]) return false; // eslint-disable-line 
    return true; 
}; 
Các vấn đề liên quan