Javascript 拉姆达:我如何用嵌套对象过滤数据?

Javascript 拉姆达:我如何用嵌套对象过滤数据?,javascript,ramda.js,Javascript,Ramda.js,我的JSON数据看起来像这样,我需要根据published为true且visibility为我自己的值进行过滤。如何以有效的方式实现这一点?非常感谢您的帮助 到目前为止,我只能使用单个属性进行过滤 const articles = [ {title: 'title 1', published: false, pages: 30, tags: {name: 'work', id: 1, visibility: "everyone"}}, {title: 'title 2', pub

我的JSON数据看起来像这样,我需要根据
published
为true且
visibility
为我自己的值进行过滤。如何以有效的方式实现这一点?非常感谢您的帮助

到目前为止,我只能使用单个属性进行过滤

const articles = [
    {title: 'title 1', published: false, pages: 30, tags: {name: 'work', id: 1, visibility: "everyone"}},
    {title: 'title 2', published: false, pages: 25, tags: {name: 'home', id: 3, visibility: "myself"}},
    {title: 'title 3', published: true, pages: 30, tags: {name: 'vacation', id: 5, visibility: "myself"}}
];
大概是这样的:

  R.filter(R.propEq("published", false))(articles);

可以使用等级库对象:

const谓词=R.where({
出版:R.equals(真),
标签:R.where({
可视性:R.equals(“我自己”),
}),
});
// ==
常数数据=[
{title:'title 1',published:false,page:30,tags:{name:'work',id:1,可见性:“everyone”},
{title:'title 2',published:false,page:25,tags:{name:'home',id:3,可见性:“我自己”},
{title:'title 3',published:true,page:30,tags:{name:'vacation',id:5,可见性:“我自己”}
];
console.log(
R.过滤器(谓词、数据),
);

是,如果您需要两个以上的谓词,请使用
R.allPass
代替
R.and
。它不应该是
而不是
R.和
似乎不需要谓词,只要仔细检查,就可以确认当前的实现不起作用@mzedeler你能看一下吗?拉姆达用
作为
&
|
的等价物,我从来都不高兴。在很多方面,我希望他们扮演的角色是
现在都扮演的角色。对不起,伙计们。固定的!
R.filter(
  R.allPass([
    R.propEq("published", false),
    R.pathEq(["tags", "visibility"], "myself")
  ])
)(articles);