Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Cách Đếm Số Lượng Thuộc Tính Của Object JavaScript

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():

  • for loop đếm cả thuộc tính object (đây dog) 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: for loop hoặc Object.keys().
  • Dùng for loop 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).