angular - GroupBy 将一个 RxJS Observable 转化为键值
问题描述
我有以下 Observable<User[]> 类型的条目:
[{
"id": 1,
"name": "Testuser 1",
"projectAccess": Role,
}]
.json
Role {
id: string;
name:string;
}
所以要求就像有一个数组,其中用户是分组角色,我想将其作为组条目传递给通用自动完成组件
return data:
[{
manager, [{"1", "Frank"}, {"3", "Seba"}]
},
{employee, [{"2", "Simi"}]
},]
任何帮助将不胜感激。谢谢
解决方案
为了实现 groupby 功能,您必须实现自己的 groupby 功能。
由于 pipe(map()) 组合,该函数在使用 observables 和简单数组之间没有区别
为了实现这个问题,这个问题与这个问题非常相似,那里 列出的算法会产生一个对象,其中对象的键是分组属性,值是列表中的出现次数。
示例代码
私有 testUser:Observable<User[]>
this.testuser.pipe(map((value)=>{
return groupBy(value);
}))
groupBy(user[]) {
let groupped=xs.reduce(function(rv, x) {
(rv[x.ProjectAccess.Name] = rv[x.ProjectAccess.Name] || []).push(x);
return rv;
}, {});
let returnList=[];
for(let i in groupped){
returnList.push({role:i,value:groupped[i]})
}
};
推荐阅读
- repository - 从没有 Debian 的仓库中获取 deb 包
- python - 用于服务 Flask 应用程序的等效 Docker CMD
- javascript - 如何在 arcgis javascript api 4.14 中添加网格化参考图形小部件
- windows - 无法根据 InstalledOn 过滤 get-wmiobject
- python - Tkinter 菜单栏
- javascript - 当我折叠、添加或删除面板时,React-hook-form 字段值会丢失
- oracle - 如何仅使用“REPLACE”、“INSTR”或“SUBSTR”oracle函数删除单词之间的空格并用单个下划线替换
- spring-cloud - Spring @RefreshScope - 有条件地重新加载/刷新 bean
- c# - 通过 System.Drawing 将位图缩放为 EMF,特定宽度为毫米?
- node-modules - “../../node_modules/.bin/”的简写?