Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
29
rated 0 times [  35] [ 6]  / answers: 1 / hits: 33895  / 9 Years ago, fri, february 20, 2015, 12:00:00

I'm trying to compare two objects with underscore.



Object 1 (Filter)



{
tuxedoorsuit:tuxedoorsuit-tuxedo,
occasions:occasions-wedding
}


Object 2 (Properties)



{
tuxedoorsuit:tuxedoorsuit-tuxedo,
occasions:occasions-wedding,
occasions:occasions-prom,
product_fit:product_fit-slim,
colorfamily:colorfamily-black
}


I want to return true when all items of Object 1 are found within Object 2. What would be the best underscore method to use for this?


More From » object

 Answers
15

Edit: As per Arnaldo's comment, you can use isMatch function, like this


console.log(_.isMatch(object2, object1));

The description says,



_.isMatch(object, properties)


Tells you if the keys and values in properties are contained in object.



If you want to iterate yourself, just use _.keys and _.every, like this


_.every(_.keys(object1), function(currentKey) {
return _.has(object2, currentKey) &&
_.isEqual(object1[currentKey], object2[currentKey]);
});

Or the chained version,


var result = _.chain(object1)
.keys()
.every(function(currentKey) {
return _.has(object2, currentKey) &&
_.isEqual(object1[currentKey], object2[currentKey]);
})
.value();

If the result is true, it means that all the keys in object1 are in object2 and their values are also equal.


This basically iterates through all the keys of object1 and checks if the value corresponding to the key in object1 is equal to the value in object2.


[#67738] Thursday, February 19, 2015, 9 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
zane

Total Points: 471
Total Questions: 94
Total Answers: 91

Location: Bahrain
Member since Sun, Mar 27, 2022
2 Years ago
;