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

Làm thế nào để kiểm tra xem một khóa có tồn tại trong đối tượng JavaScript hay không?

Có một số cách để tìm xem khóa có tồn tại trong đối tượng javascript hay không.

Giả sử chúng ta có một đối tượng 'nhân viên' như hình dưới đây.

   var employee = {
      name: "Ranjan",
      age: 25
   }

Bây giờ chúng ta cần kiểm tra xem thuộc tính 'name' có tồn tại trong đối tượng nhân viên hay không.

1) Toán tử 'Trong'

Chúng ta có thể sử dụng toán tử 'in' trên đối tượng để kiểm tra các thuộc tính của nó. Toán tử 'in' cũng xem xét thuộc tính kế thừa nếu nó không tìm thấy bất kỳ thuộc tính thực tế nào của đối tượng.

Trong ví dụ sau khi 'toString' được kiểm tra xem có hiện diện hay không, toán tử 'in' sẽ xem xét kỹ lưỡng các thuộc tính của đối tượng. Một khi nó xác nhận sự vắng mặt của nó, nó sẽ nói đến các thuộc tính cơ bản của đối tượng. Vì, 'toString' là thuộc tính cơ sở nên nó hiển thị 'true' như được hiển thị trong đầu ra.

Ví dụ

<html>
<body>
<script>
   var employee = {
      name: "Ranjan",
      age: 25
   }
   document.write("name" in employee);
   document.write("</br>");
   document.write("salary" in employee);
   document.write("</br>");
   document.write("toString" in employee);
</script>
</body>
</html>

đầu ra

true
false
true


2) hasOwnProperty ()

Phương thức này chỉ xem xét kỹ lưỡng đối tượng cho các thuộc tính thực tế mà không xem xét bất kỳ loại thuộc tính kế thừa nào. Nếu có các thuộc tính thực, phương pháp này hiển thị đúng hoặc sai dựa trên tính khả dụng của chúng.

Trong ví dụ sau, chúng tôi cũng tìm kiếm các thuộc tính kế thừa như 'toString' để nó hiển thị false như được hiển thị trong đầu ra.

Ví dụ

<html>
<body>
<script>
   var employee = {
      name: "Ranjan",
      age: 25
   }
   document.write(employee.hasOwnProperty('toString'));
   document.write("</br>");
   document.write(employee.hasOwnProperty('name'));
   document.write("</br>");
   document.write(employee.hasOwnProperty('salary'));
</script>
</body>
</html>

Đầu ra

false
true
false