เรียนรู้วิธีนับจำนวนคุณสมบัติในวัตถุ 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
forloop นับทั้งคุณสมบัติของวัตถุ (ที่นี่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()หากคุณต้องการนับคุณสมบัติที่นับได้เท่านั้น (ของวัตถุเอง)