অবজেক্টগুলো অ্যারে বা স্ট্রিংয়ের মতো নয়। তাই সরাসরি "===" বা "==" দিয়ে তুলনা করা সম্ভব নয়। এখানে অবজেক্টকে প্রথমে স্ট্রিংগিফাই (stringify) করতে হয়, তারপর ইকwalিটি অপারেটর দিয়ে তুলনা করা সম্ভব।
নিচের উদাহরণে, অবজেক্টগুলো প্রথমে স্ট্রিংগিফাইড (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
নিচের উদাহরণটি দেখলে, একই প্রোপার্টিগুলো রয়েছে কিন্তু তাদের অর্ডার ভিন্ন। এই ক্ষেত্রে অবজেক্ট তুলনা false রিটার্ন করবে।
উদাহরণ
<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' পরিচয় করানো হয়েছে। এটি চেক করে কী/ভ্যালু পেয়ার (key/value pairs) সমান কিনা, কিন্তু তাদের অর্ডার চেক করে না।
উদাহরণ
নিচের উদাহরণে 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