2017-07-19 5 views
0

私はこの候補配列を持っています。それらの一部は削除され、一部は削除されません。彼らは順序付けられていないので、私はそれらを削除されているかどうかによって姓で注文したいと思います。私は、配列だけを受け取り、要素がオブジェクトであれば、指定されたプロパティで配列を受け付けるパイプを使用しています。rxjsを使用してパーティションを分割し、変換してから新しい配列に圧縮します

これは難しいことではありません。私自身の自己利益のため

let added = this.candidates.filter(c => !c.removed); 
let removed = this.candidates.filter(c => c.removed); 

added = new OrderByPipe().transform(added, ['lastName']); 
removed = new OrderByPipe().transform(removed, ['lastName']); 

let orderedCandidates = added.concat(removed); 

、私は.partition()

を通じて観測可能とパイプそれに私の候補配列を変換したいこれまでのところ私が管理している:

orderCandidates() { 
    let [added, removed] = Observable.from(this.candidates) 
     .partition(c => !c.removed); 
    added = added.toArray().map(a => new OrderByPipe().transfrom(a, ['-lastName'])); 
    removed = removed.toArray().map(r => new OrderByPipe().transfrom(r, ['-lastName'])); 
} 

次に、2つのソートされた配列を新しい配列にジップまたは連結したいとします。私は最近、rxjsのすべてが非常に合理化されたパイプラインを流通しているという私の心の中にこのイメージを持っていることを学びました。このイメージに従おうとするとアイデアがなくなりました。実際

+3

Downvotes witho:のみ使用観測可能な演算子は、単にあなたのデータを変換するために.map()を使用したいと思います説明は有用ではありません。 – wolfhoundjesse

答えて

0

、あなたのorderedCandidatesはすでにちょうどObservable.of()を使用して、それから、観察を作成していない理由をフィルタリングソートされた配列の場合:?あなたは観測と恋に実際にある場合、

let added = this.candidates.filter(c => !c.removed); 
let removed = this.candidates.filter(c => c.removed); 

added = new OrderByPipe().transform(added, ['lastName']); 
removed = new OrderByPipe().transform(removed, ['lastName']); 

let orderedCandidates = added.concat(removed); 

//create an Observable of list of ordered, sorted candidates 
let orderedCandidates$ = Observable.of(orderedCandidates); 

かと

orderCandidates() { 
    let orderedCandidate$ = Observable.from(this.candidates) 
     .partition(c => !c.removed) 
     .map(([added, removed])=>{ 
      added = added.toArray().map(a => new OrderByPipe().transfrom(a, ['-lastName'])); 
      removed = removed.toArray().map(r => new OrderByPipe().transfrom(r, ['-lastName'])); 
      return added.concat(removed); 
     }) 

    return orderedCandidate$; 
} 
+1

私はこれらのことを逆さまにするような気がする。私はどこにいるのか、どこにいなければならないのかを知ることができますが、そこに行く方法はわかりません。あなたの2番目の例を見ると、私は通常、情報が下に流れ落ちることを考えていると言うことができます。そのため、そこに私の結果をどうするかについて絡み合っています。私は物事がトップに戻ることを常に忘れています。私はlearnrxサイトが解決する約50の問題を持っていたらいいです!笑、優雅な説明のおかげで。 – wolfhoundjesse

+0

@wolfhoundjesse私は正しいことを知っています!一度反応型プログラミングの良さを味わうと、助けはできませんが、常にそれを観察可能な方法で行います:) – CozyAzure

関連する問題