Ramda: How to filter based on a value in a nested array

后端 未结 2 695
被撕碎了的回忆
被撕碎了的回忆 2020-12-05 16:21

I\'m trying to accomplish this in a functional manner (with Ramda). My JSON is structured like this

[
    {username: \'bob\', age: 30, tags: [\'work\', \'bor         


        
相关标签:
2条回答
  • 2020-12-05 16:46
    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);
    
    0 讨论(0)
  • 2020-12-05 16:56

    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.

    0 讨论(0)
提交回复
热议问题