Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rxjs对象数组distinct with子句_Rxjs - Fatal编程技术网

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
。每当主体找到与其键匹配的对象时,该主体都会发射