การเข้าใจ ความยาวของวัตถุ JavaScript
: แนวทางปฏิบัติที่ดีที่สุดและโซลูชันสมัยใหม่
วัตถุ JavaScript ถูกใช้งานอย่างแพร่หลาย แต่คุณจะระบุความยาวของมันได้อย่างไร? หากคุณเคยต้องการทราบว่ามีคุณสมบัติใดบ้างในวัตถุ คุณไม่ใช่คนเดียว บทความนี้สำรวจวิธีที่ดีที่สุดในการหาความยาวของวัตถุ JavaScript และความซับซ้อนที่เกี่ยวข้อง รวมถึงการอภิปรายเกี่ยวกับสัญลักษณ์และคุณสมบัติของมัน
ปัญหา
เมื่อทำงานกับวัตถุ JavaScript คุณอาจต้องการทราบว่ามีคุณสมบัติจำนวนเท่าไหร่ ตัวอย่างเช่น วัตถุง่ายๆ ดังนี้:
const myObject = new Object();
myObject["firstname"] = "Gareth";
myObject["lastname"] = "Simpson";
myObject["age"] = 21;
คุณอาจถามว่า: มีวิธีในตัวหรือตามธรรมเนียมที่จะหาความยาวของวัตถุนี้ไหม?
โซลูชันสมัยใหม่
ตั้งแต่ปี 2016 เบราว์เซอร์หลายตัวรองรับ ES5 และเวอร์ชันที่สูงกว่า ทำให้เราสามารถกำหนดความยาวของวัตถุได้ง่ายด้วยวิธี Object.keys()
วิธีนี้จะส่งกลับอาร์เรย์ของชื่อคุณสมบัติที่เป็นของวัตถุเอง และโดยการวัดความยาวของอาร์เรย์นี้ เราสามารถทราบได้ว่าหมายเลขของคุณสมบัติในวัตถุมีทั้งหมดเท่าไหร่
การใช้ Object.keys()
นี่คือตัวอย่างวิธีการใช้งาน:
var size = Object.keys(myObject).length;
console.log(size); // แสดงผล: 3
ข้อดีของการใช้ Object.keys()
- ความเรียบง่าย: มันชัดเจนและง่ายต่อการใช้งาน
- ไม่ต้องแก้ไข Prototype: วิธีนี้ไม่ต้องการการเปลี่ยนแปลงใน Prototype ของ Object ซึ่งเป็นสิ่งสำคัญเพื่อหลีกเลี่ยงบั๊กและความขัดแย้งที่อาจเกิดขึ้นในโค้ดของคุณ
คุณสมบัติของสัญลักษณ์
เป็นสิ่งสำคัญที่ต้องทราบว่าวัตถุสามารถมีคุณสมบัติที่เป็นสัญลักษณ์ซึ่ง Object.keys()
จะไม่ส่งกลับ สัญลักษณ์เป็นประเภทข้อมูลพิเศษใน JavaScript ใช้สร้างตัวระบุที่ไม่ซ้ำสำหรับคุณสมบัติของวัตถุ ฟีเจอร์นี้ช่วยป้องกันการเขียนทับคุณสมบัติ ทำให้โค้ดของคุณมีความแข็งแกร่งมากขึ้น
การเข้าถึงคุณสมบัติของสัญลักษณ์
คุณสามารถใช้ Object.getOwnPropertySymbols()
เพื่อดึงคุณสมบัติเหล่านี้ นี่คือวิธีการจัดการกับทั้งคุณสมบัติปกติและคุณสมบัติที่เป็นสัญลักษณ์:
var person = {
[Symbol('name')]: 'John Doe',
[Symbol('age')]: 33,
"occupation": "Programmer"
};
// การหาความยาวของคุณสมบัติที่ไม่ใช่สัญลักษณ์
const propOwn = Object.getOwnPropertyNames(person);
console.log(propOwn.length); // แสดงผล: 1
// การหาความยาวของคุณสมบัติที่เป็นสัญลักษณ์
let propSymb = Object.getOwnPropertySymbols(person);
console.log(propSymb.length); // แสดงผล: 2
สรุปเกี่ยวกับการใช้วิธีการ
โดยสรุป นี่คือวิธีการหลักที่คุณควรตรวจสอบเมื่อคำนวณความยาวของวัตถุ JavaScript:
Object.keys(obj)
: ส่งกลับจำนวนของคุณสมบัติที่มีคีย์เป็นสตริงที่สามารถเสนอราคาได้Object.getOwnPropertyNames(obj)
: ส่งกลับจำนวนของคุณสมบัติทั้งหมดที่เป็นของตัวเอง (ไม่สนใจสัญลักษณ์)Object.getOwnPropertySymbols(obj)
: ส่งกลับจำนวนของคุณสมบัติที่เป็นสัญลักษณ์ที่เป็นของตัวเอง
วิธีการทางเลือก
ในโค้ดเบสเก่า วิธีปกติคือการสร้างฟังก์ชันเพื่อนับขนาดด้วยตนเอง:
Object.size = function(obj) {
var size = 0;
for (var key in obj) {
if (obj.hasOwnProperty(key)) size++;
}
return size;
};
// การหาขนาดของวัตถุ
const myObj = {};
var size = Object.size(myObj);
การระมัดระวัง
โดยทั่วไปแล้ว การเพิ่มวิธีการไปยัง Object.prototype
ไม่ใช่แนวทางที่ดี นักพัฒนาอาจต้องพบกับพฤติกรรมที่ไม่คาดคิดในแอปพลิเคชันของคุณ
บทสรุป
การระบุความยาวของวัตถุ JavaScript เป็นงานที่พบได้บ่อยซึ่งสามารถทำได้อย่างมีประสิทธิภาพด้วยการใช้ Object.keys()
ในขณะที่ยังคำนึงถึงสัญลักษณ์เพื่อความสมบูรณ์ ด้วยเครื่องมือเหล่านี้ คุณจะสามารถจัดการกับจำนวนคุณสมบัติวัตถุได้อย่างมั่นใจและมีประสิทธิภาพในแอปพลิเคชัน JavaScript ของคุณ