Ramda: How to filter based on a value in a nested array
const arr = [
{username: 'bob', age: 30, tags: ['work', 'boring']},
{username: 'jim', age: 25, tags: ['home', 'fun']},
{username: 'jane', age: 30, tags: ['vacation', 'fun']}
];
res = R.filter(R.where({tags: R.contains('home')}), arr);
There are many ways you could do this. But I think the cleanest one would be:
R.filter(R.where({tags: R.includes('fun')}))
You can see it in action in the Ramda REPL.
Other options, especially if the field is more deeply nested is to compose
(or pipe
) prop
or path
calls with contains
or possibly to take advantage of lenses.
Still, I think the answer above is most readable.