2017-11-12 5 views
1

私はロダッシュのjson配列から拒否するデータがあります。私は、望ましくない複数のキー値を拒否する必要があります。角度マップ内のチェーンマップまたはチェーンフィルターが約束を返す方法

私はマップを連鎖させて、拒否機能を再度使用するか、または拒否メソッドが使用するための述語関数を書くことができると考えています。

私はここで問題を過剰思っているかもしれないと思います。誰かが私の頭をこの周りで包み込むのを助けることができますか?これを機能させるには、オブザーバブルに切り替える必要がありますか?

ビール、リキュール、ワインなどを拒否したいと考えています。データも入れ子になっています。ここで

は、ここでJSONオブジェクト enter image description here

は私のサービスである例です。

getMenuByLocationID(locationID) { 
return this._http.get('/api/locations/menu', {params: {locationID: locationID}}) 
.map((response: Response) => 
_.reject(response.json(), { 
    _embedded: { 
    menu_categories: [ { 
     name: 'BEER' 
    } ] 
    } 
})) 
.toPromise() 
.catch(this.handleError); 

}

+0

よう

何かがあなたが 'Http'サービスや新しい' HttpClient'サービスを使用していますか? –

+0

@ angle/httpから{http}をインポート –

+0

予想される結果は何ですか? 'getMenuByLocationID(someId).then((expectedData)=> ...)'を呼び出すと、 'expectedData'の期待値は? –

答えて

1

私は_.rejectが一致基準で複数の値を扱うことができるとは思いません。したがって、拒否された値(BEER、WINE、...)ごとに_.rejectを複数回使用できますが、最適な解決策ではない可能性があります。

代わりに_.rejectに、すべての値を一度にテストするカスタム述語関数を使用できます。しかし、あなたはこのテストを正解しなければならない、私はロダッシュがソリューションを組み込んだとは思わない。しかし、私は間違っている可能性が...その

gettMenuByLocationID (locationID) { 
    return this._http.get('/api/locations/menu', {params: {locationID: locationID}}) 
      .map((response: Response) => { 
       let data = _.reject(response.json(), {_embedded: {menu_categories: [{name: 'BEER'}]}}) 
       data  = _.reject(data, {_embedded: {menu_categories: [{name: 'WINE'}]}}) 
       return _.reject(data, {_embedded: {menu_categories: [{name: 'WHATEVER'}]}}) 
      }) 
      .toPromise() 
      .catch(this.handleError) 
} 
+0

それは私が尋ねるものです。上記のように返品された約束で何回使用するのですか? –

+0

@GarrettSanderson私はいくつかのコードを追加しました。そうすれば、そのカテゴリに応じてより多くのあなたの反応をフィルタリングすることができます。 –

関連する問題