I've following interfaces and Observable<Machine[]>, what I want to achive is group by Machine symbol property in  Observable<Machine[]> and return mapped observable 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;
}
I've tried to use RxJS gropBy operator but it seems it return grouped array one by one.
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 }  })
        );
as in result I have Observable<Order> istead ofObservable<Order[]>.
expected result model:
orders: Order[] = [
        {   
            symbol: "A", 
            machines: [
                { amount: 1, price: 1, id: 1 },
                { amount: 1, price: 2, id: 2 }
            ]
        }
    ];
 
    