เรียนรู้วิธีนับจำนวนคุณสมบัติในวัตถุ JavaScript ด้วยสองวิธีที่แตกต่างกัน
ในการนับจำนวนคุณสมบัติของวัตถุ JavaScript คุณสามารถใช้:
- a
for
ห่วง - หรือ
Object.keys()
วิธีการ
มาสำรวจทั้งคู่กันเถอะ!
นับคุณสมบัติของอ็อบเจ็กต์ด้วย a for loop
นี่คือวัตถุ JavaScript ชื่อ dog
:
const dog = {
name: "Naya",
age: 2,
color: "black",
Breed: "Rottweiler mix",
}
การนับจำนวนคุณสมบัติของอ็อบเจ็กต์ใน dog
ก่อนอื่นเรามาประกาศตัวแปรชื่อ count
และให้ค่าเริ่มต้นเป็น 0
:
let count = 0
ตอนนี้เราต้องวนซ้ำ dog
วัตถุ และสำหรับแต่ละคุณสมบัติที่เราเจอ เราเพิ่มหนึ่ง (+ 1) ให้กับ count
ตัวแปร:
for (let properties in dog) {
count = count + 1
}
ตอนนี้ลองพิมพ์ผลลัพธ์โดยใช้ console.log()
:
console.log(count)
// Result: 4
หากคุณเขียนโค้ดถูกต้อง คุณควรได้ 4
.
นับคุณสมบัติของวัตถุด้วย Object.keys()
คุณยังสามารถใช้ Object.keys()
. ของ JavaScript วิธีการนับทั้งหมด นับได้ คุณสมบัติ (เพิ่มเติมเกี่ยวกับสิ่งนั้นในไม่กี่วินาที) บนวัตถุ
กลับมาใช้ dog
. กันเถอะ จากเมื่อก่อน แต่ตอนนี้เราส่ง dog
วัตถุเป็น Object.keys()
และคำนวณความยาวด้วย length
คุณสมบัติ:
const dog = {
name: "Naya",
age: 2,
color: "black",
Breed: "Rottweiler mix",
}
let count = Object.keys(dog).length
console.log(count)
// Result: 4
อย่างที่คุณเห็นผลลัพธ์ก็เหมือนกัน หรือว่า?
ใช่และไม่. ขึ้นอยู่กับบริบท
สำหรับ vs. Object.keys()
ความแตกต่างระหว่างการใช้ for
วนซ้ำและ Object.keys()
คือ:
- The
for
loop นับทั้งคุณสมบัติของวัตถุ (ที่นี่dog
) และคุณสมบัติใดๆ ที่อาจเชื่อมโยงกับวัตถุภายนอกได้ - โดยค่าเริ่มต้น
Object.keys()
เมธอดจะนับ (ระบุ) เฉพาะคุณสมบัติของอ็อบเจ็กต์ (ของตัวเอง) เท่านั้น ไม่ใช่คุณสมบัติที่เชื่อมโยง
การแจงนับ เป็นอีกคำหนึ่งสำหรับ การนับ
ฉันหมายถึงอะไรกับ “คุณสมบัติที่เชื่อมโยง”?
ลองใช้ Object.keys()
. เดียวกัน ตัวอย่างเมื่อก่อน แต่คราวนี้เรา link dog
วัตถุไปยังวัตถุที่เรียกว่า animal
โดยใช้ _proto_
คุณสมบัติ:
// New object
let animal = {
fourLegs: true,
}
const dog = {
name: "Naya",
age: 2,
color: "black",
Breed: "Rottweiler mix",
}
// Link dog object to animal object
dog.__proto__ = animal
var count = Object.keys(dog).length
console.log(count)
// Result: 4
ทำไมผลลัพธ์เป็น 4 เมื่อจำนวนคุณสมบัติทั้งหมด dog
และ animal
คือ 5 และเราเพิ่งเชื่อมโยงพวกเขาเข้าด้วยกันและนับพวกเขาหรือไม่
เพราะเราใช้ Object.keys()
ซึ่งนับเฉพาะคุณสมบัติของตัวเอง (นับได้) ไม่ใช่คุณสมบัติที่เชื่อมโยง ดังนั้น fourLegs
ทรัพย์สินจาก animal
วัตถุไม่ได้รับการนับในตัวอย่างข้างต้น
คราวนี้มาลองอีกตัวอย่างหนึ่ง แต่คราวนี้เราใช้ for
วนซ้ำเพื่อนับคุณสมบัติ:
const animal = {
fourLegs: true,
}
const dog = {
name: "Naya",
age: 2,
color: "black",
Breed: "Rottweiler mix",
}
// Link dog object to animal object
dog.__proto__ = animal
let count = 0
for (properties in dog) {
count = count + 1
}
console.log(count)
// Result: 5
ตอนนี้เราได้รับพร็อพเพอร์ตี้ทั้งหมด 5 อย่างแล้ว เพราะไม่เหมือนกับ Object.keys()
เมื่อเราใช้ for
วนซ้ำเรานับทุก ทุก คุณสมบัติของวัตถุ รวมทั้ง เชื่อมโยง คุณสมบัติของวัตถุ
อย่างที่คุณเห็น สิ่งสำคัญคือแนวทางที่คุณใช้
โดยสรุป:
- มีสองวิธีในการนับจำนวนคุณสมบัติในวัตถุ คุณสามารถใช้
for
วนซ้ำหรือObject.keys()
วิธีการ - ใช้
for
วนซ้ำหากคุณต้องการรวมคุณสมบัติของอ็อบเจ็กต์ที่เชื่อมโยงในการนับพร็อพเพอร์ตี้ของคุณ - ใช้
Object.keys()
หากคุณต้องการนับคุณสมบัติที่นับได้เท่านั้น (ของวัตถุเอง)