11

我正在尝试以一种功能性的方式(使用 Ramda)来实现这一点。我的 JSON 结构是这样的

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

我正在尝试根据“标签”属性中的值进行过滤,但没有成功。我能够过滤整数/字符串(年龄和用户名),但我无法弄清楚如何使用嵌套数组(标签)中的值进行过滤。任何帮助将非常感激。

4

2 回答 2

24

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

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

您可以在Ramda REPL中看到它的运行情况。

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

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

于 2015-03-25T12:51:11.203 回答
3
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);
于 2018-04-20T02:59:21.923 回答