Hi 🤓 Cảm ơn bạn đã ghé thăm blog này, nếu những bài viết trên blog giúp ích cho bạn. Bạn có thể giúp blog hiển thị quảng cáo bằng cách tạm ngừng ad blocker 😫 và để giúp blog duy trì hoạt động nếu bạn muốn.
Cảm ơn bạn!

Khi chúng ta có một object, làm thế nào để kiểm tra một key bất kỳ trong object tồn tại hay không, bài viết này sẽ giúp các bạn giải quyết vấn đề trên 😊.

Check key exist in object JavaScript

Sử dụng in trong Javascript

Chúng ta có thể check key exist trong object bằng cách sử dụng in operator.

Cú pháp: prop in object

  • prop: Tên thuộc tính muốn check.
  • object: in operator sẽ kiểm tra xem trong object này có chứa thuộc tính với tên được chỉ định (prop) hay không.

Cùng xem một ví dụ để hiểu hơn về in operator nhé.

Giả sử mình có một object rapper như sau:

const rapper = {
  name: 'Eminem',
  born: '1972',
  albums: ['Kamikaze', 'The Eminem Show']
}

Chúng ta sẽ sử dụng in để kiểm tra xem thuộc tính name trong rapper có tồn tại không nhé, nếu tồn tại in operator trả về true, ngược lại là false.

Các bạn có thể sử dụng in với if để kiểm tra:

if ('name' in rapper) {
  //... làm gì đó ở đây :v
}

Một cách check key exist trong object nữa đó là sử dụng hasOwnProperty() method, cùng xem method này sử dụng thế nào nhé ^^.

Sử dụng hasOwnProperty() method

Method hasOwnProperty() trả về một giá trị boolean khi kiểm tra trong object có thuộc tính của chính nó hay không.

hasOwnProperty() khác với in operator ở chỗ nó sẽ kiểm tra thuộc tính của chính nó mà không xét các thuộc tính inherited.

Cùng xem một ví dụ để hiểu rõ hơn nhé:

let website = {name: 'homiedev.com'};

// Sử dụng `hasOwnProperty`.

website.hasOwnProperty('name');             // returns true
website.hasOwnProperty('toString');         // returns false
website.hasOwnProperty('hasOwnProperty');   // returns false

// Sử dụng `in` operator

'name' in example;                          // returns true
'toString' in example;                      // returns true
'hasOwnProperty' in example;                // returns true

Ở ví dụ trên, hasOwnProperty sẽ return true nếu các thuộc tính muốn check nằm trong chính object (Không bao gồm các thuộc tính inherited).

Sử dụng in operator sẽ return true nếu thuộc tính tồn tại trong object (Bao gồm các thuộc tính inherited).

Sử dụng Object.hasOwn()

Tương tự như hasOwnProperty() ta có Object.hasOwn(), method này được khuyên dùng hơn hasOwnProperty(), vì Object.hasOwn() có thể sử dụng cho các object được tạo bằng Object.create(null) và cho các đối tượng đã overridden method kế thừa là hasOwnProperty().

Cùng xem ví dụ dưới đây để hiểu hơn về method này nhé.

let person = Object.create(null);
person.age = 20;
console.log(Object.hasOwn(person, 'age')); // true
console.log(person.hasOwnProperty('age')); 
// Uncaught TypeError: person.hasOwnProperty is not a function

Method hasOwnProperty là method được kế thừa từ Object. Khi sử dụng Object.create(null) sẽ không có các properties như hasOwnProperty(), đây là lý do xảy ra person.hasOwnProperty is not a function.

let person = {
  // ghi đè method hasOwnProperty()
  hasOwnProperty: function() {
    return false;
  },
  name: 'Vu'
};

// Sử dụng Object.hasOwn()
console.log(Object.hasOwn(person, 'name')); // true
console.log(Object.hasOwn(person, 'hasOwnProperty'));  // true

// Sử dụng hasOwnProperty()
console.log(person.hasOwnProperty('name')); // false
console.log(person.hasOwnProperty('hasOwnProperty'));  // false

Nhiều trình duyệt chưa hỗ trợ method Object.hasOwn().

Kết luận

Như vậy là chúng ta đã tìm hiểu về các cách để kiểm tra key tồn tại trong object. Hy vọng bài viết giúp ích cho các bạn.

Chúc các bạn học tốt ^^.

Một số bài viết khác nên đọc:

  1. Object.is() trong Javascript là gì?
  2. Object.seal() trong JavaScript có gì hay?
  3. object.freeze() trong JavaScript có gì hay?
  4. Method Object.keys(), values, entries trong JavaScript
Có thể bạn thích ⚡
homiedev
About Me

Hi, I'm @devnav. Một người thích chia sẻ kiến thức, đặc biệt là về Frontend 🚀. Trang web này được tạo ra nhằm giúp các bạn học Frontend hiệu quả hơn 🎉😄.

Chúc các bạn tìm được kiến thức hữu ích trong blog này 😁😁.