Consider this example. I am using Lodash
\'data\': [
{
\'category\': {
\'uri\': \'/categories/0b092e7c-4d2c-4eba-8c4e-80
beginning from v3.7.0
you can do it in this way:
_.filter(summary.data, 'category.parent', 'Food')
_.where(summary.data, {category: {parent: 'Food'}});
Should do the trick too
_.filter(summary.data, function(item){
return item.category.parent === 'Food';
});
lodash allows nested object definitions:
_.filter(summary.data, {category: {parent: 'Food'}});
As of v3.7.0, lodash also allows specifying object keys in strings:
_.filter(summary.data, ['category.parent', 'Food']);
Example code in JSFiddle: https://jsfiddle.net/6qLze9ub/
lodash also supports nesting with arrays; if you want to filter on one of the array items (for example, if category is an array):
_.filter(summary.data, {category: [{parent: 'Food'}] });
If you really need some custom comparison, that's when to pass a function:
_.filter(summary.data, function(item) {
return _.includes(otherArray, item.category.parent);
});
In lodash 4.x, you need to do:
_.filter(summary.data, ['category.parent', 'Food'])
(note the array wrapping around the second argument).
This is equivalent to calling:
_.filter(summary.data, _.matchesProperty('category.parent', 'Food'))
Here are the docs for _.matchesProperty:
// The `_.matchesProperty` iteratee shorthand.
_.filter(users, ['active', false]);
// => objects for ['fred']