Học cách đếm số thuộc tính của object JavaScript, với hai phương pháp khác nhau.
Để đếm số thuộc tính object JS, bạn có thể dùng:
- vòng lặp
for - hoặc phương thức
Object.keys().
Khám phá cả hai!
Đếm thuộc tính object với vòng lặp for
Object JavaScript tên dog:
const dog = { name: "Naya", age: 2, color: "black", Breed: "Rottweiler mix", }
Đếm số thuộc tính trong dog, khai báo biến count giá trị bắt đầu 0:
let count = 0
Lặp qua object dog, mỗi thuộc tính gặp thêm 1 (+1) cho count:
for (let properties in dog) { count = count + 1 }
In kết quả dùng console.log():
console.log(count) // Kết quả: 4
Nếu code đúng, bạn nhận 4.
Đếm thuộc tính object với Object.keys()
Cũng dùng Object.keys() của JavaScript đếm tất cả thuộc tính enumerable (sẽ nói sau) trên object.
Dùng lại object dog, truyền dog cho Object.keys() tính length bằng property length:
const dog = { name: "Naya", age: 2, color: "black", Breed: "Rottweiler mix", } let count = Object.keys(dog).length console.log(count) // Kết quả: 4
Kết quả giống nhau. Hay không?
Có và không. Tùy ngữ cảnh.
for vs Object.keys()
Khác biệt giữa for loop và Object.keys():
forloop đếm cả thuộc tính object (đâydog) và thuộc tính có thể linked với object bên ngoài.- Mặc định
Object.keys()chỉ đếm (enumerate) thuộc tính enumerate của object (mình nó) — không linked properties.
Enumeration là từ khác của đếm.
"Linked properties" nghĩa là gì?
Lấy ví dụ Object.keys() trước, nhưng lần này link object dog với object animal bằng property __proto__:
// Object mới let animal = { fourLegs: true, } const dog = { name: "Naya", age: 2, color: "black", Breed: "Rottweiler mix", } // Link dog object đến animal object dog.__proto__ = animal var count = Object.keys(dog).length console.log(count) // Kết quả: 4
Tại sao kết quả 4, khi tổng thuộc tính dog và animal là 5, vừa link vừa đếm?
Vì dùng Object.keys() chỉ đếm thuộc tính enumerate của nó, không linked properties. Do đó fourLegs từ animal không được đếm.
Thử ví dụ khác, lần này dùng for loop đếm:
const animal = { fourLegs: true, } const dog = { name: "Naya", age: 2, color: "black", Breed: "Rottweiler mix", } // Link dog object đến animal object dog.__proto__ = animal let count = 0 for (properties in dog) { count = count + 1 } console.log(count) // Kết quả: 5
Giờ có 5 thuộc tính, vì khác với Object.keys(), for loop đếm tất cả thuộc tính object, bao gồm linked object properties.
Như bạn thấy, cách tiếp cận quan trọng.
Tóm lại:
- Hai cách đếm thuộc tính object:
forloop hoặcObject.keys(). - Dùng
forloop nếu muốn bao gồm linked object properties trong đếm. - Dùng
Object.keys()nếu chỉ muốn đếm enumerable properties (của chính object).