Rxjs - Сглаживание с преобразованием - PullRequest
2 голосов
/ 16 мая 2019

У меня есть простая проблема, которую я действительно не знаю, как справиться с Rxjs.

API возвращает массив, подобный следующему:

[
  {
    name : test1,
    code : [1, 2]
  },
  {
    name : test2,
    code : [1, 2, 3]
  },
  ...
]

И я хотел бычтобы вернуть что-то подобное с помощью Rxjs:

[
  {
    name : test1,
    code : 1
  },
  {
    name : test1,
    code : 2
  },
  {
    name : test2,
    code : 1
  },
  {
    name : test2,
    code : 2
  },
  {
    name : test2,
    code : 3
  },
  ...
]

Это очевидно возможно с помощью комбинации преобразования, но я не могу обойти это.

1 Ответ

2 голосов
/ 16 мая 2019

Вам не нужно rxjs для этого, только оператор map.Вы можете добиться этого, используя функцию reduce из массива:

непроверенный код, но вы получите идею

this.callToApi().pipe(
  map(data => data.reduce((acc, cumm) => {
    acc.push(
      ...cumm.code.map(code => ({ name: cumm.name, code }))
    );
    return acc;
  }, []))
).subscribe(data => {
  console.log(data);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...