2016-11-03 38 views
2

我懷疑這並不難,但我無法弄清楚如何去做。我有一個對象數組,每個對象都包含一個數組。在做了一些額外的處理之後,我想爲每個元素檢索一個遠程資源。我的問題是我的函數返回一個數組,但我希望數組的元素分開。使用rxjs,如何將每個元素映射到多個元素

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

首先,你需要圍繞你的對象方括號嗎?即在您的第一行中,您目前擁有'.from({「rosters」:...},{...})'。應該是'.from([{「rosters」:...},{...}])?請注意方括號的插入。當我沒有他們的時候我會遇到一個錯誤。 –

+0

你是對的,這是我的問題,而不是在代碼中的錯字。謝謝,改爲你建議的 –

+0

我對Rx並不熟悉,但是我想知道'flatMap'是否可以用於(2) – tmslnz

回答

0

由於無論是從OP以及來自@tmslnz援助......

變化.map(group => group.roster).flatMap(group => group.roster)

相關問題