【发布时间】:2021-06-12 11:12:14
【问题描述】:
我已经关注了接口和Observable<Machine[]>,我想要实现的是按Observable<Machine[]> 中的机器symbol 属性分组并返回映射的可观察Observable<Order[]>。
export interface Machine {
symbol: string;
price: number;
amount: number;
id: number;
}
export interface Order {
symbol: string;
machines: OrderMachine[];
}
export interface OrderMachine {
price: number;
amount: number;
id: number;
}
我尝试使用 RxJS 的 gropBy 运算符,但它似乎一个一个地返回分组数组。
machines: Machine[] = [
{ amount: 1, id: 1, symbol: "A", price: 1 },
{ amount: 1, id: 2, symbol: "A", price: 2 }
];
of(machines).pipe(
takeUntil(this.unsubscribe),
mergeMap(res => res),
groupBy(m => m.symbol),
mergeMap(group => zip(of(group.key), group.pipe(toArray()))),
map(x => { // here I have probably wrong model [string, Machine[]]
const orderMachines = x[1].map(y => { return <OrderMachine>{price: y.price, amount: y.amount, id: y.id }})
return <Order>{ symbol: x[0], machines: orderMachines } })
);
结果我有Observable<Order>而不是Observable<Order[]>。
预期结果模型:
orders: Order[] = [
{
symbol: "A",
machines: [
{ amount: 1, price: 1, id: 1 },
{ amount: 1, price: 2, id: 2 }
]
}
];
【问题讨论】:
标签: rxjs rxjs5 rxjs6 rxjs-observables