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