我从API的get调用中收到一个元素流,在第一次执行此操作时,我不需要过滤此数据。我可以提供信息。
但是根据有人可以选择的过滤器,我有一个表单,我需要过滤数据。
我遇到的主要问题是我使用map运算符迭代数组中的所有元素,并且当它与filter.continent具有相同的大陆时返回此国家但是当它不匹配时返回undefined。< / p>
然后经过这个过滤器,我得到这样的东西:
[undefined, {some country data}, undefined, undefined, {some country data}]
这是我的重新过滤函数的代码示例
refilterValues(){
Observable.from(this.data)
.map((country)=>{
if(this.filters.continent == "All"){
return country;
}else{
if(country["continent"] == this.filters.continent){
console.log(country)
return country
}
}
})
}
答案 0 :(得分:2)
您应该使用过滤器operator而不是map运算符。 Map迭代所有元素并返回一些东西,即使你的逻辑没有返回任何东西(因为它出现在你的数组中的undefined
)。过滤器获取可观察的输出,并且只有在逻辑返回true
时才返回它。
过滤源Observable发出的项目 满足指定的谓词。
refilterValues(){
Observable.from(this.data)
.filter((country)=>{
if(this.filters.continent == "All"){
return true;
}else{
if(country["continent"] == this.filters.continent){
console.log(country)
return true
}
return false
}
})
}