Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

นับ Properties ใน JavaScript Object 2 วิธี

เรียนรู้นับจำนวน properties ใน JavaScript object ด้วย 2 วิธี

นับ properties ใช้ได้:

  • for loop
  • Object.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()

  • for loop นับ properties ของ object + linked properties นอก object
  • Object.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