Javascript 如何在返回承诺的Http请求内部进行链映射或链过滤

Javascript 如何在返回承诺的Http请求内部进行链映射或链过滤,javascript,json,angular,lodash,Javascript,Json,Angular,Lodash,我从一个带有lodash的json数组中拒绝了一些数据。我需要拒绝多个不需要的键值 我想我可以链式映射并再次使用reject函数,也可以为reject方法编写一个谓词函数 我想我可能是想得太多了,有人能帮我解决这个问题吗?我需要切换到一个可观察的模式才能工作吗 我希望能够拒绝啤酒、白酒、葡萄酒等。数据也是嵌套的 下面是一个示例JSON对象 这是我的服务 getMenuByLocationID(locationID) { return this._http.get('/api/locations

我从一个带有lodash的json数组中拒绝了一些数据。我需要拒绝多个不需要的键值

我想我可以链式映射并再次使用reject函数,也可以为reject方法编写一个谓词函数

我想我可能是想得太多了,有人能帮我解决这个问题吗?我需要切换到一个可观察的模式才能工作吗

我希望能够拒绝啤酒、白酒、葡萄酒等。数据也是嵌套的

下面是一个示例JSON对象

这是我的服务

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);

}

我不认为
可以处理其匹配条件中的多个值。因此,您可以对每个被拒绝的值(啤酒、葡萄酒等)多次使用
\拒绝
,但这可能不是最佳解决方案

相反,您可以使用一个自定义谓词函数来使用
\uuu.reject
,该函数一次测试所有值。但是你必须编写这个测试,我不认为lodash提供了一个内置的解决方案。但我可能错了

诸如此类

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)
}

您使用的是
Http
服务还是新的
HttpClient
服务?从@angular/Http导入{Http}预期结果是什么?如果调用
getMenuByLocationID(someId)。然后((expectedData)=>…)
,则
expectedData
的预期值是多少?预期结果将是所有不是啤酒、葡萄酒、白酒的项目。现在我只得到了所有不是啤酒的东西,这就是我的要求。如何在如上所示的返回承诺中多次使用它。@GarrettSanderson我添加了一些代码。这样,您可以根据响应的类别筛选出越来越多的响应。