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

จะเปรียบเทียบสองวัตถุใน JavaScript ได้อย่างไร


ออบเจ็กต์ไม่เหมือนอาร์เรย์หรือสตริง ดังนั้นเพียงแค่เปรียบเทียบโดยใช้ "===" หรือ "==" เป็นไปไม่ได้ ที่นี่เพื่อเปรียบเทียบ เราต้อง ทำให้แน่น . ก่อน วัตถุแล้วใช้ตัวดำเนินการความเท่าเทียมกัน เป็นไปได้ที่จะเปรียบเทียบวัตถุ

ในตัวอย่างต่อไปนี้ ออบเจ็กต์ stringified() ตอนแรกแล้วเอามาเปรียบเทียบกัน

ตัวอย่าง

<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>

ผลลัพธ์

true

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

ตัวอย่าง

<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>

ผลลัพธ์

false

เพื่อเอาชนะข้อเสียนี้ ไลบรารีจาวาสคริปต์ชื่อ 'lodash ' แนะนำตัว. จะตรวจสอบว่า คู่คีย์/ค่า จะเท่ากันหรือไม่แต่ไม่เป็นระเบียบ

ตัวอย่าง

ในตัวอย่างต่อไปนี้ คุณสมบัติ "_isEqual()" ของ lodash ใช้เพื่อเปรียบเทียบออบเจกต์จาวาสคริปต์

<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>

ผลลัพธ์

false