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

การตรวจสอบว่าคีย์มีอยู่ในอ็อบเจ็กต์ JavaScript หรือไม่


ภาพรวม

เราต้องแสดงวิธีที่ถูกต้องในการตรวจสอบว่าคีย์เฉพาะมีอยู่ในอ็อบเจ็กต์หรือไม่ ก่อนจะไปถึงวิธีที่ถูกต้อง ให้เราดูวิธีที่ผิดก่อน

วิธีที่ 1: ตรวจสอบค่า undefined (วิธีผิด)

เนื่องจากลักษณะของ JavaScript เราอาจต้องการตรวจสอบการมีอยู่ของคีย์ในอ็อบเจ็กต์แบบนี้:

const obj = { name: 'Rahul' };
if(!obj['fName']){}

หรือ

if(obj['fName'] === undefined){}

ทั้งสองวิธีนี้ ผิด เพราะอาจมีคีย์ fName ที่ถูกตั้งค่าเป็น false หรือ undefined จริงๆ ฟังก์ชันควรคืนค่าว่าคีย์มีอยู่ แต่กลับคืนค่าว่าไม่มี

วิธีที่ 2: ใช้ตัวดำเนินการ in (วิธีถูกต้อง)

คีย์เวิร์ด in ที่มาพร้อม ES6 ตรวจสอบรายการใน iterable ดังนั้นเพื่อตรวจสอบการมีอยู่ของคีย์ เราสามารถทำได้ดังนี้:

('fName' in obj);

วิธีที่ 3: ใช้เมธอด hasOwnProperty() (วิธีถูกต้อง)

ใช้ Object.prototype.hasOwnProperty() เพื่อตรวจสอบว่าอ็อบเจ็กต์มีคีย์หรือไม่

obj.hasOwnProperty('fName');

ความแตกต่างระหว่างวิธีที่ 2 และ 3 คือ วิธีที่ 3 ตรวจสอบเฉพาะคุณสมบัติของอินสแตนซ์อ็อบเจ็กต์ที่เรียกใช้ ในขณะที่ in ตรวจสอบทั้งคุณสมบัติของอินสแตนซ์และคุณสมบัติที่สืบทอดมา (ถ้ามี)