Objects ไม่เหมือน arrays หรือ strings เปรียบเทียบด้วย "===" หรือ "==" ไม่ได้ ต้อง stringify ก่อน แล้วค่อยใช้ equality operators
ตัวอย่าง: stringify objects ก่อน แล้วเปรียบเทียบ
ตัวอย่างที่ 1 (Properties เรียงเหมือนกัน)
<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
ตัวอย่างที่ 2: properties เหมือนกันแต่ ลำดับต่างกัน JSON.stringify() คืน false
ตัวอย่างที่ 2 (Properties เรียงต่างกัน)
<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
แก้ด้วย library lodash ตรวจสอบ key/value pairs เท่ากันหรือไม่ ไม่สนใจลำดับ
ตัวอย่างที่ 3 (ใช้ Lodash _.isEqual)
<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 true