Javascript 拉姆达:我如何用嵌套对象过滤数据?
我的JSON数据看起来像这样,我需要根据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
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);