javascript - 我正在寻找一种方法来根据其他数组的值从我的选择数组中删除项目
问题描述
我正在尝试从选择数组中删除与我的其他数组匹配的选项,它们都来自 api 并且通过 ngFor 显示,我已经在尝试使用过滤器但没有成功,代码如下:
loadUnidadeUsuarios() {
return this.restApi.getUnidadeUsuarios(this.id).subscribe((data: UnidadeUsuario) => {
this.unidadeUsuarioData = data;
});
}
然后加载 UnidadeUsuarioData 后,我需要删除匹配的用户:
loadUsuarios() {
return this.restApi.getUsuarios().subscribe((data: Usuario) => {
this.Usuario = data;
this.Usuario = this.Usuario.filter(usuario => usuario.id !== this.unidadeUsuarioData.id )
});
}
但没有成功
解决方案
过滤器看起来像
this.Usuario.filter(usuario=>!this.unidadeUsuario.find(x=>x.id==usuario.id)
但是,如果您需要等待两个呼叫完成,您必须考虑到这一点。为此使用 switchMap
this.restApi.getUnidadeUsuarios(this.id).pipe(
switchMap((res: any[]) => {
//..here you has your getUnidadeUsuario...
//but you want the others usuarios
return this.restApi.getUsuarios().pipe(map((usuarios: any[]) => {
//in usuarios you has all the usuarios
//but you want filtered
return usuarios.filter(u => !res.find(x => x.id == u.id))
}))
})
).subscribe(usuarios => {
console.log(usuarios)
})
推荐阅读
- windows - Win10文件资源管理器记不住最大化
- linux - Qt使用directfb作为显示后端,directfb使用backvideo作为缓冲模式,但是WaitVSync导致GUI响应很慢
- python - Websocket 使用 Python 将 JSON 数据流式传输到 Excel
- sql - Posgresql 交叉表替代方案
- c# - 如何从十六进制字符串中获取位范围并将其转换为整数?
- javascript - 使用 lodash orderby 对字母数字字段进行排序
- kubernetes - Kubernetes 显示多个请求而不是一个
- javascript - 尝试理解 npm 进行前端开发
- c# - MogoDB 作为 IdentityServer 的存储:invalid_scope
- php - 如何跨多个 phpunit 集成测试共享单个数据库连接?