删除重复的JSX元素|React Strapi graphql



长话短说,我有一个JSX元素数组,看起来像这样:

<ChatListCard
key={index}
prop1={prop1}
prop2={prop2}
prop3={prop3}
/>

我得到了这些";卡片";来自Strapi/Graphql API中的两个不同的表,所以我做了这样的事情:

[].concat(
array1.map((item,index)=> <Card key={index} prop1={item.prop1} ... />),
array2.map((item,index)=> <Card key={index} prop1={item.prop1} ... />)
)

问题是array1和array2包含一些";项目";它们是相同的,需要过滤掉。有没有一种方法可以做到这一点,使用JS:

[].concat(...).filter((magic)=> magic but filtered) //use the filter here

,或者我应该在GraphQL中完成。(我已经使用了where子句,只过滤掉我不需要的项目(

query ProposalsAndRequests($input:String!){
proposals(where: {_or:[
{owner:{email:$input}}
{task:{owner:{email:$input}}}
]},sort:"created_at:desc"){
id
...
}
}
chatRequests(where:{_or:[
{users_permissions_user:{email:$input}}
{task:{owner:{email:$input}}}
]},sort:"created_at:desc"){
id
...
}
}
  • 注意:聊天请求和建议包含相同的字段,它们只是在网站的其他地方用于不同的目的
  • users_permissions_user和owner也是同一关系

您可以使用;设置";js中的数据结构。CCD_ 1。集合不能有重复项!:-(但是如果引用不相同,它们可以具有相同的对象。

对于更复杂的过滤器,请使用.reduce函数来仅累积uniques。

或者,你可以用类似的东西来消除重复

const noDubs = [];
myArr.foreach(item => {
if(!noDubs.some(entry = entry.special.property === item.special.property) noDubs.push(item);
});

最新更新