猿问

Ramda:如何使用嵌套对象过滤数据?

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"}}

];

我的 JSON 数据看起来像这样,我需要根据published true 和visibility我自己的值进行过滤。我怎样才能以有效的方式实现这一目标?对此有任何帮助将不胜感激。


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


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


白衣染霜花
浏览 145回答 2
2回答

米脂

像这样的东西:R.filter(  R.allPass([    R.propEq("published", false),    R.pathEq(["tags", "visibility"], "myself")  ]))(articles);

浮云间

您可以使用规范对象:const predicate = R.where({&nbsp; published: R.equals(true),&nbsp; tags: R.where({&nbsp; &nbsp; visibility: R.equals('myself'),&nbsp; }),});// ==const data = [&nbsp; {title: 'title 1', published: false, pages: 30, tags: {name: 'work', id: 1, visibility: "everyone"}},&nbsp; {title: 'title 2', published: false, pages: 25, tags: {name: 'home', id: 3, visibility: "myself"}},&nbsp; {title: 'title 3', published: true, pages: 30, tags: {name: 'vacation', id: 5, visibility: "myself"}}];console.log(&nbsp; R.filter(predicate, data),);<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.0/ramda.js" integrity="sha256-buL0byPvI/XRDFscnSc/e0q+sLA65O9y+rbF+0O/4FE=" crossorigin="anonymous"></script>
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答