Ramda:如何根据嵌套数组中的值进行过滤

时间:2015-03-25 11:32:16

标签: ramda.js

我试图以功能性的方式实现这一目标(使用Ramda)。我的JSON结构如下

[
    {username: 'bob', age: 30, tags: ['work', 'boring']},
    {username: 'jim', age: 25, tags: ['home', 'fun']},
    {username: 'jane', age: 30, tags: ['vacation', 'fun']}
]

我正在尝试根据'标记中的值进行过滤。财产,但没有成功。我能够过滤内联/字符串(年龄和用户名),但我无法弄清楚如何使用嵌套数组(标签)中的值。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:17)

有很多方法可以做到这一点。但我认为最干净的是:

R.filter(R.where({tags: R.contains('fun')}))

您可以在 Ramda REPL 中看到它。

其他选项,尤其是如果字段嵌套得更深,则compose(或pipeproppath调用contains或可能利用镜头。

不过,我认为上面的答案最具可读性。

答案 1 :(得分:1)

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);