Rxjs-转换变平

时间:2019-05-16 14:40:13

标签: angular rxjs

我有一个简单的问题,我真的不知道如何使用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 个答案:

答案 0 :(得分:2)

您实际上不需要rxjs,只需map运算符。您可以使用Array中的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);
});