Cách dễ nhất để thực hiện điều này, với hiệu suất tuyệt vời và khả năng tương thích với cả trình duyệt cũ và mới, bao gồm Lo-Dash hoặc Underscore trong trang của bạn.
Sau đó, bạn có thể sử dụng một trong hai _.size(object)
hoặc _.keys(object).length
Đối obj.Data
của bạn, bạn có thể kiểm tra điều này với:
console.log(_.size(obj.Data));
hay:
console.log(_.keys(obj.Data).length);
Lo-Dash và gạch dưới đều tuyệt vời thư viện; bạn sẽ tìm thấy một trong hai rất hữu ích trong mã của bạn. (Chúng khá giống nhau; Lo-Dash là một phiên bản mới hơn với một số advantanges.)
Ngoài ra, bạn có thể bao gồm chức năng này trong mã của bạn, mà chỉ đơn giản lặp thông qua thuộc tính của đối tượng và đếm chúng:
function ObjectLength(object) {
var length = 0;
for(var key in object) {
if(object.hasOwnProperty(key)) {
++length;
}
}
return length;
};
Bạn có thể kiểm tra điều này với:
console.log(ObjectLength(obj.Data));
đang đó không phải là nhanh như nó có thể là trong các trình duyệt hiện đại, mặc dù. Đối với một phiên bản nhanh hơn nhiều trong các trình duyệt hiện đại và vẫn hoạt động trong những cái cũ, bạn có thể sử dụng:
function ObjectLength_Modern(object) {
return Object.keys(object).length;
}
function ObjectLength_Legacy(object) {
var length = 0;
for(var key in object) {
if(object.hasOwnProperty(key)) {
++length;
}
}
return length;
}
var ObjectLength =
Object.keys ? ObjectLength_Modern : ObjectLength_Legacy;
và như trước, thử nghiệm nó với:
console.log(ObjectLength(obj.Data));
Mã này sử dụng Object.keys(object).length
trong các trình duyệt hiện đại và rơi trở lại để đếm trong một vòng lặp cho các trình duyệt cũ.
Nhưng nếu bạn làm tất cả công việc này, tôi khuyên bạn nên sử dụng Lo-Dash hoặc Underscore thay thế và nhận được tất cả những lợi ích mà các thư viện đó cung cấp.
Tôi thiết lập jsPerf that compares the speed of these various approaches. Hãy chạy nó trong bất kỳ trình duyệt nào bạn có thể thêm vào các bài kiểm tra.
Cảm ơn Barmar vì câu trả lời của anh ấy là suggesting Object.keys
for newer browsers.
bạn có thể xin vui lòng gửi đối tượng hoàn chỉnh? –
Tại sao bạn sử dụng một đối tượng theo cách này? Có rất nhiều điều cần xem xét cho câu hỏi của bạn - bạn cần phải hiểu những thuộc tính nào, cái nào là số đếm, cách nguyên mẫu có thể thêm vào mớ hỗn độn ở đây, v.v. Tại sao không chỉ sử dụng một mảng? – Sacho
Mặc dù q này được đánh dấu là trùng lặp, câu trả lời được chấp nhận ở đây hoạt động dễ dàng hơn đối với tôi rằng các giải pháp được đưa ra trong câu hỏi đầu tiên. –