Angular 获取两个观测值之间的差异

Angular 获取两个观测值之间的差异,angular,rxjs,Angular,Rxjs,我试图得到两个非常相似的观测值之间的差异,根据一个共享ID字段从另一个观测值中移除其中一个的值。我试过这个问题的答案: const inActiveUsers=combinelatetest(storedUsers$,activeUsers$).pipe( 地图([storedUsers,activeUsers])=>{ const activeUsersIds:Map=activeUsers.reduce( (附件:地图,项目)=>{ 附件组(项目id,未定义) 返回acc; }, 新地图(

我试图得到两个非常相似的观测值之间的差异,根据一个共享ID字段从另一个观测值中移除其中一个的值。我试过这个问题的答案:

const inActiveUsers=combinelatetest(storedUsers$,activeUsers$).pipe(
地图([storedUsers,activeUsers])=>{
const activeUsersIds:Map=activeUsers.reduce(
(附件:地图,项目)=>{
附件组(项目id,未定义)
返回acc;
},
新地图()
);
返回storedUsers.filter(item=>!activeUsersIds.has(item.id));
})
)
inActiveUsers.subscribe(inActiveUsers=>{
this.inActiveUsers=不活动用户;
});
但它似乎只是删除了其中一个记录(大概是最后一个?)


有人能给我提些建议吗?

我的建议,但我不知道这是否是你需要的

const storedUsers$:Observable=this.store.select(storeduserselector);
const activeUsers$:Observable=this.store.select(activeUsersSelector);
//API:导出函数组合测试(来源:[O1,O2]):可观察;
const inActiveUsers=CombineTest([storedUsers$,activeUsers$])。管道(
地图([storedUsers,activeUsers])=>{
//只保存ID
const-id:string[]=activeUsers.map(item=>item.id);
//如果包含,则添加结果
return storedUsers.filter(item=>ids.includes(item.id));
})
);

我不明白。什么类型的storedUsers$和activeUsers$?可观察到?你在用什么?我觉得这个概念不好。我会做完全不同的事情。我只是不知道什么类型的变量。你好。非常感谢。这似乎非常接近,我可以看到你提到,你认为这个想法是有缺陷的,或者应该以不同的方式来做。我实际上要做的是查找非活动用户,所以我要查找“如果不包含,则添加结果”。我很乐意考虑一种完全不同的方式。我只是想从一个可观测数据中得到第二个可观测数据中没有的记录。事实上,我认为纠正这个问题很简单?我将使用:
returnstoredusers.filter(item=>ids.includes(item.id))包含将实现包含。这是真的:
[0,1,2]。包括(1)
,这是假的:
[0,1,2]。包括(3)
过滤器
通过内部函数获取过滤数组。若为真,则结果中将包含项,若为非,则结果中不会包含项。所以
返回storedUsers.filter(…)
工作。Ofc,“id”必须在此
项中。