我试图以功能性的方式实现这一目标(使用Ramda)。我的JSON结构如下
[
{username: 'bob', age: 30, tags: ['work', 'boring']},
{username: 'jim', age: 25, tags: ['home', 'fun']},
{username: 'jane', age: 30, tags: ['vacation', 'fun']}
]
我正在尝试根据'标记中的值进行过滤。财产,但没有成功。我能够过滤内联/字符串(年龄和用户名),但我无法弄清楚如何使用嵌套数组(标签)中的值。任何帮助将不胜感激。
答案 0 :(得分:17)
有很多方法可以做到这一点。但我认为最干净的是:
R.filter(R.where({tags: R.contains('fun')}))
您可以在 Ramda REPL 中看到它。
其他选项,尤其是如果字段嵌套得更深,则compose
(或pipe
)prop
或path
调用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);