2016-11-03 6 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 */); 

#3の各入力が別の文字列になるように#2の関数にデータを返すようにします。 #3に入っているのは配列です(私の例では文字列のペアです)。ありがとう! .flatMap(group => group.roster)へOPからだけでなく、@tmslnzから両方の支援により

+1

まず、オブジェクトの周りに角括弧が必要ですか?すなわち、あなたの最初の行には現在、 '.from({"ロスター ":...}、{...})'があります。それは '.from([{"ロスター ":...}、{...}])'であるべきですか?角括弧の挿入に注意してください。私はそれらを持っていないときに私はエラーを取得します。 –

+0

あなたが正しいです、それは私の質問の誤字ですが、コード内ではありませんでした。あなたが提案したものに変更しました –

+0

私は特にRxに慣れていませんが、(2) – tmslnz

答えて

0

...

変更.map(group => group.roster)

関連する問題