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

Làm thế nào để so sánh hai đối tượng trong JavaScript?

Các đối tượng không giống như mảng hoặc chuỗi. Vì vậy, chỉ cần so sánh bằng cách sử dụng "===" hoặc "==" là không thể. Ở đây để so sánh, trước tiên chúng ta phải stringify đối tượng và sau đó sử dụng toán tử bình đẳng có thể so sánh các đối tượng.

Trong ví dụ sau, các đối tượng được stringified () lúc đầu và sau đó so sánh với nhau.

Ví dụ

<html>
<body>
   <script>
      const obj1 = {Name: "Rahim", City: 'Hyderabad',Country: "India" };
      const obj2 = {Name: "Rahim", City: 'Hyderabad',Country: "India" };
      document.write(JSON.stringify(obj1) === JSON.stringify(obj2));
   </script>
</body>
</html>

Đầu ra

true

Nếu chúng ta nhìn vào ví dụ sau, mặc dù các thuộc tính giống nhau được lặp lại, nhưng thứ tự của chúng khác nhau. Trong trường hợp này, so sánh đối tượng sẽ dẫn đến false như được hiển thị trong đầu ra.

Ví dụ

<html>
<body>
   <script>
      const obj1 = {Name: "Rahim", City: 'Hyderabad', Country: "India" };
      const obj2 = {Name: "Rahim", Country: "India", City: 'Hyderabad', };
      document.write(JSON.stringify(obj1) === JSON.stringify(obj2));
   </script>
</body>
</html>

Đầu ra

false

Vì vậy, để khắc phục nhược điểm này, một thư viện javascript có tên là ' lodash ' được giới thiệu. Nó kiểm tra xem cặp khóa / giá trị bằng nhau hay không nhưng không phải là thứ tự của chúng.

Ví dụ

Trong ví dụ sau, thuộc tính "_isEqual ()" của lodash được sử dụng để so sánh các đối tượng javascript.

<html>
<head>
   <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/0.10.0/lodash.min.js"></script>
</head>
<body>
   <script>
      const obj1 = {Name: "Rahim", City: 'Hyderabad', Country: "India" };
      const obj2 = {Name: "Rahim", Country: "India", City: 'Hyderabad', };
      document.write(JSON.stringify(obj1) === JSON.stringify(obj2));
      document.write("</br>");
      document.write(_.isEqual(obj1, obj2));
   </script>
</body>
</html>

Đầu ra

false
true