Javascript 根据angular 8中的特定条件过滤来自httpClient的响应数据

Javascript 根据angular 8中的特定条件过滤来自httpClient的响应数据,javascript,angular,typescript,filter,angular8,Javascript,Angular,Typescript,Filter,Angular8,嗨,我是新的角度(V8)。我正在发出post请求,希望根据条件筛选响应数据。当我尝试时,我得到了以下错误,filter不是一个函数。请你给我引路,这样对我会有帮助的 Sample Response = { className:"a", dept_name:"b", jsonData:[ { "type":"branch", "value":"1" }, { "type":"branch", "value":"1" }, { "type":"dev", "value":"2" }, { "type

嗨,我是新的角度(V8)。我正在发出post请求,希望根据条件筛选响应数据。当我尝试时,我得到了以下错误,filter不是一个函数。请你给我引路,这样对我会有帮助的

Sample Response = {
className:"a",
dept_name:"b",
jsonData:[
{
"type":"branch",
"value":"1"
},
{
"type":"branch",
"value":"1"
},
{
"type":"dev",
"value":"2"
},
{
"type":"dev",
"value":"2"
},
{
"type":"dev",
"value":"2"
},
{
"type":"branch",
"value":"1"
}
]

} 
我想过滤jsonData,其中type=“dev”


您使用的是版本8,因此如果使用CLI启动,则会自动包括rxjs 6。您应该继续讨论这个问题,这意味着可以使用管道操作符。此外,我们通常会在服务中分配http请求,组件只订阅结果,这就是我在下面的StackBlitz中所做的。这里我将使用您的代码,但请参考StackBlitz

将代码更改为:

从'rxjs/operators'导入{map};
// ...
this.http.post('someurl')
.烟斗(
映射(val=>this.filterVal=val),
//使用筛选器获取所需的值
映射(items=>items.jsonData.filter(item=>item.type==='dev'))
)
如果您坚持使用较旧的RXJ,它看起来非常相似:

this.http.post('someurl'))
.map(val=>this.filterVal=val)
.map(items=>items.jsonData.filter(item=>item.type==='dev'))
但请接受更新的版本


当我尝试上述方法时,它会抛出一个错误res.jsonData.filter不是一个函数。
this.http.post('someurl')
  .map(item => this.filterVal = item)
  .filter(item => item.type=== "dev") 
  .subscribe(data => {
    this.posts = data;
  })

Expected Output :
jsonData:[
{
"type":"dev",
"value":"2"
},
{
"type":"dev",
"value":"2"
},
{
"type":"dev",
"value":"2"
}
]
Response.jsonData.filter(x => {x.type === "dev"})