Reputation: 237
Can you help me on how to check if object the two objects are equal? here's the two objects that I'm trying to compare...
let obj1 = {"Add Ons": [{"addon_id": 32, "addon_name": "Black Pearl", "addon_price": 15}, {"addon_id": 33, "addon_name": "White Pearl", "addon_price": 15}]}
let obj2 = {"Add Ons": [{"addon_id": 33, "addon_name": "White Pearl", "addon_price": 15}, {"addon_id": 32, "addon_name": "Black Pearl", "addon_price": 15}]}
I tried using this const isEqual = (...objects) => objects.every(obj => JSON.stringify(obj) === JSON.stringify(objects[0]));
to check if it's equal but if the array inside is shuffle it returns false. how to check if it's equal event though in random? thank you so much!
Upvotes: 1
Views: 1867
Reputation: 2266
Assuming you are checking for equality of addon_id
,
every()
and check whether the obj2
array contains all of the ids. function isEqual() {
let obj1 = {
'Add Ons': [
{ addon_id: 32, addon_name: 'Black Pearl', addon_price: 15 },
{ addon_id: 33, addon_name: 'White Pearl', addon_price: 15 }
]
};
let obj2 = {
'Add Ons': [
{ addon_id: 33, addon_name: 'White Pearl', addon_price: 15 },
{ addon_id: 32, addon_name: 'Black Pearl', addon_price: 15 },
{ addon_id: 34, addon_name: 'Black Pearl', addon_price: 15 }
]
};
if (obj1['Add Ons'].length !== obj2['Add Ons']) return false;
return obj1['Add Ons'].every(val => {
return obj2['Add Ons'].some(b2 => b2.addon_id === val.addon_id);
});
}
Upvotes: 1