使用rxjs,如何将每个元素映射到多个元素

时间:2016-11-03 00:40:43

标签: javascript rxjs reactive-programming

我怀疑这并不难,但我无法弄清楚如何做到这一点。我有一个对象数组,每个对象包含一个数组。在做了一些额外的处理之后,我想为每个元素检索一个远程资源。我的问题是我的函数返回一个数组,但我希望数组元素分开。

return Rx.Observable.from([                                // 1
    { "rosters": ["a/name1", "b/name2"] },
    { "rosters": ["c/name3", "c/name4"] }])
  .map(group => group.rosters)                             // 2
  .map(roster => roster.substring(0, roster.indexOf('/'))) // 3
  .distinct() // have I seen this before?
  .map(folder => http.get(URL + folder + '/ads.json').map(res => res.json())
  .map(adData => adData.ads)
  .reduce(/* choose random ad */);

我希望#2处的函数返回数据,使得#3的每个输入都是一个单独的字符串。现在进入#3的是数组(在我的示例中是字符串对)。谢谢!

1 个答案:

答案 0 :(得分:1)

在OP以及@tmslnz的帮助下......

.map(group => group.roster)更改为.flatMap(group => group.roster)