rxjs - RxJS 在属性中的对象数组上不同
问题描述
我有一个 observable,它返回如下内容:
"@odata.context": "here is the context URL",
"value": [
{
"Id": 1,
"Value": "A"
},
{
"Id": 2,
"Value": "B"
},
{
"Id": 3,
"Value": "C"
},
{
"Id": 4,
"Value": "A"
}
]
}
使用 RxJS 我想进入“值”属性并在其上使用 distinct 来限制对这样的响应:
"@odata.context": "here is the context URL",
"value": [
{
"Id": 1,
"Value": "A"
},
{
"Id": 2,
"Value": "B"
},
{
"Id": 3,
"Value": "C"
}
]
}
你能帮我吗?
解决方案
这在很大程度上取决于你想如何使用这个 RxJS 链,但我希望这会引导你正确的方向:
const source = of(data)
.pipe(
mergeMap(d => d.value),
distinct(v => v.Value),
toArray(),
)
.subscribe(console.log);
mergeMap
将重复值数组作为单独的排放,其中distinct
将忽略重复Value
的 s。然后toArray()
将收集所有结果。