Итак, насколько я понимаю, вы хотите "сжать" два списка вместе, через наблюдаемые?
Я могу предложить вам этот
const numbers$: Observable<number[]> = of([1, 2, 3]);
const strings$: Observable<string[]> = of(['a', 'b']);
const combined$: Observable<any> = zip(numbers$, strings$)
.pipe(
map(([numbers, strings]) =>
numbers.length > strings.length ?
numbers.map((value, index) => [value, strings[index]]) :
strings.map((value, index) => [numbers[index], value]))
);
combined$.subscribe(value => console.log(value));
Это будет записывать: [[1, "a"], [2, "b"], [3, null]]