Javascript 根据angular 8中的特定条件过滤来自httpClient的响应数据
嗨,我是新的角度(V8)。我正在发出post请求,希望根据条件筛选响应数据。当我尝试时,我得到了以下错误,filter不是一个函数。请你给我引路,这样对我会有帮助的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
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"})