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