Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ตรวจสอบว่ามีคีย์อยู่ในวัตถุ JavaScript


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

วิธีที่ 1:ตรวจสอบค่าที่ไม่ได้กำหนด (วิธีที่ไม่ถูกต้อง)

เนื่องจากลักษณะที่ผันผวนของ JavaScript เราอาจต้องการตรวจสอบการมีอยู่ของคีย์ในวัตถุเช่นนี้ -

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

หรือ

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

ทั้งสองวิธีนี้เป็นวิธีที่ไม่ถูกต้อง ทำไม?

เพราะในกรณีนี้จะไม่มีคีย์ 'fName' แต่สมมติว่ามี 'fName' ซึ่งจงใจตั้งค่าเป็นเท็จหรือไม่ได้กำหนดไว้

ฟังก์ชันของเราน่าจะกลับมาว่าไม่มีคีย์ แต่จริงๆ แล้วมี ดังนั้นในกรณีเช่นนี้ วิธีการนี้จะล้มเหลว

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

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

('fName' in obj);

วิธีที่ 3 - การใช้วิธี hasOwnProperty() (วิธีที่ถูกต้อง)

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

ไวยากรณ์ของมันคือ −

obj.hasOwnProperty('fName');

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