Arrays 如何比较两个不同的API请求以获取和显示Reactjs中的重复值?
我有这样的情况: 我正在使用axios从API接收两个不同的请求。我需要做的是比较两者以显示此值是否重复。 1.其中一个请求包含一个具有作者id的嵌套数组,另一个请求包含相同的id。如果id等于,我将需要显示作者名称,即在作者内部Arrays 如何比较两个不同的API请求以获取和显示Reactjs中的重复值?,arrays,reactjs,Arrays,Reactjs,我有这样的情况: 我正在使用axios从API接收两个不同的请求。我需要做的是比较两者以显示此值是否重复。 1.其中一个请求包含一个具有作者id的嵌套数组,另一个请求包含相同的id。如果id等于,我将需要显示作者名称,即在作者内部 我怎样才能得到这个呢?据我所知,如果帖子和作者的值是相同的id,您是否在尝试获取author中的值 const作者=[ { id:1, 名称:“苹果” }, { id:2, 名称:“香蕉” }, { id:3, 名称:“橙色” } ]; 常数员额=[ { 元数据:{
我怎样才能得到这个呢?据我所知,如果帖子和作者的值是相同的id,您是否在尝试获取author中的值
const作者=[
{
id:1,
名称:“苹果”
},
{
id:2,
名称:“香蕉”
},
{
id:3,
名称:“橙色”
}
];
常数员额=[
{
元数据:{
作者:2
}
},
{
元数据:{
作者:3
}
},
{
元数据:{
作者:4
}
}
];
常量mapItem=[];
authors.forEach(author=>{
posts.forEach(post=>{
if(author.id==post.metadata.authorId){
mapItem.push(作者);
}
});
});
console.log(mapItem);
//[{id:2,名称:'banana'},{id:3,名称:'orange'}]
您可以将作者ID存储在一个集合中,并通过检查该ID是否在集合中来过滤作者
,以实现线性时间复杂度:
const authorIDs = new Set(posts.map(post => post.metadata.authorId));
const duplicateAuthors = authors.filter(author => authorIDs.has(author.id));
就这样!非常感谢,真的很有帮助。我的荣幸
const authorIDs = new Set(posts.map(post => post.metadata.authorId));
const duplicateAuthors = authors.filter(author => authorIDs.has(author.id));