Computer >> Máy Tính >  >> Lập trình >> Javascript

Kiểm tra xem khóa có tồn tại trong một đối tượng JavaScript hay không

Chúng tôi được yêu cầu minh họa cách chính xác để kiểm tra xem một khóa cụ thể có tồn tại trong một đối tượng hay không. Trước khi chuyển sang cách đúng, trước tiên chúng ta hãy kiểm tra một cách không chính xác và xem nó thực sự không chính xác như thế nào.

Cách 1:Kiểm tra giá trị không xác định (cách không chính xác)

Do tính chất dễ thay đổi của JavaScript, chúng tôi có thể muốn kiểm tra sự tồn tại của khóa trong một đối tượng như thế này -

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

hoặc

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

Cả hai đều là những cách không chính xác. Tại sao?

Bởi vì trong trường hợp này sẽ xảy ra trường hợp không có khóa 'fName', nhưng giả sử có tồn tại một 'fName' được cố tình đặt thành false hoặc không xác định.

Hàm của chúng ta lẽ ra phải trả về rằng khóa không tồn tại nhưng thực sự thì chúng đã có. Vì vậy, trong những trường hợp như vậy, phương pháp này không thành công.

Cách 2 - Sử dụng toán tử in (Cách đúng)

Từ khóa in vừa được giới thiệu trong ES6 kiểm tra một mục nhập trong một tệp có thể lặp lại. Do đó, để kiểm tra sự tồn tại của khóa, chúng ta có thể làm như -

('fName' in obj);

Cách 3 - Sử dụng phương thức hasOwnProperty () (Cách đúng)

Sử dụng phương thức Object.prototype.hasOwnProperty (), chúng ta có thể xác định xem một đối tượng có chứa khóa hay không.

Cú pháp của nó là -

obj.hasOwnProperty('fName');

Sự khác biệt giữa Cách 2 và Cách 3 chỉ là Cách 3 chỉ kiểm tra thuộc tính của đối tượng mà nó được gọi trong khi ‘in’ kiểm tra các thuộc tính của đối tượng cũng như các thuộc tính kế thừa (nếu có).