Rxjs对象数组distinct with子句
我有这些小溪Rxjs对象数组distinct with子句,rxjs,Rxjs,我有这些小溪 const site = of([ { name: 'Joe', age: 30, tsUpdate: 5 }, { name: 'Frank', age: 20, tsUpdate: 4 }, { name: 'Ryan', age: 50, tsUpdate: 4 } ]); const db = of([ { name: 'Jonas', age: 30, tsUpdate: 4 }, { name: 'Frank', age: 21, tsUpdate:
const site = of([
{ name: 'Joe', age: 30, tsUpdate: 5 },
{ name: 'Frank', age: 20, tsUpdate: 4 },
{ name: 'Ryan', age: 50, tsUpdate: 4 }
]);
const db = of([
{ name: 'Jonas', age: 30, tsUpdate: 4 },
{ name: 'Frank', age: 21, tsUpdate: 8 },
{ name: 'Calgor', age: 50, tsUpdate: 4 },
{ name: 'Joe', age: 30, tsUpdate: 4 },
]);
我们的目标是为每个数组创建一个具有不同值的数组
名称,但具有最高的tsUpdate
比如说
{ name: 'Joe', age: 30, tsUpdate: 5 }
{ name: 'Joe', age: 30, tsUpdate: 4 }
我想要
{ name: 'Joe', age: 30, tsUpdate: 5 }
我可以为name属性指定不同的值
但我不知道如何为tsUpdate选择最高值
这可能是解决问题的一种方法:
forkJoin(
[
地点,
分贝
]
).烟斗(
地图(([site,db])=>[…site,…db]),
//单独发出每个项目
mergeAll(),
//按名称分组
groupBy(o=>o.name),
//对于每个单独的组,查找具有最高`t更新的对象`
合并地图(
grp$=>grp$管道(
减少((acc,crt)=>crt.tsUpdate>acc.tsUpdate?crt:acc),
),
),
//最后,收集数组中的所有对象
toArray(),
).subscribe(console.log);
groupBy
的组是主题
,这就是为什么我们可以在之后使用mergeMap
。每当主体找到与其键匹配的对象时,该主体都会发射