เรียนรู้นับจำนวน properties ใน JavaScript object ด้วย 2 วิธี
นับ properties ใช้ได้:
forloopObject.keys()method
นับด้วย for loop
Object dog:
const dog = {
name: "Naya",
age: 2,
color: "black",
Breed: "Rottweiler mix",
};
Declare count = 0:
let count = 0;
Loop dog object ทุก property +1:
for (let properties in dog) {
count = count + 1;
}
Print result:
console.log(count); // Result: 4
นับด้วย Object.keys()
ใช้ Object.keys() นับ enumerable properties:
const dog = { name: "Naya", age: 2, color: "black", Breed: "Rottweiler mix" };
let count = Object.keys(dog).length;
console.log(count); // Result: 4
ผลลัพธ์เหมือนกัน แต่จริงๆ ขึ้นอยู่กับ context
for vs Object.keys()
forloop นับ properties ของ object + linked properties นอก objectObject.keys()นับแค่ own enumerable properties — ไม่รวม linked properties
Enumeration = counting
"Linked properties" คืออะไร? Link dog กับ animal ด้วย __proto__:
let animal = { fourLegs: true };
const dog = { name: "Naya", age: 2, color: "black", Breed: "Rottweiler mix" };
dog.__proto__ = animal;
var count = Object.keys(dog).length;
console.log(count); // Result: 4
ทำไม 4? dog+animal = 5 properties linked แล้ว แต่ Object.keys() นับแค่ own properties → fourLegs ไม่นับ
ลอง for loop:
const animal = { fourLegs: true };
const dog = { name: "Naya", age: 2, color: "black", Breed: "Rottweiler mix" };
dog.__proto__ = animal;
let count = 0;
for (properties in dog) { count = count + 1; }
console.log(count); // Result: 5
ได้ 5 เพราะ for loop นับ ทุก property รวม linked
Summary
- 2 วิธี: for loop หรือ Object.keys()
- ใช้ for loop ถ้าอยากรวม linked properties
- ใช้ Object.keys() ถ้าอยากนับแค่ own enumerable properties