如何在TypeScript中过滤数组。我试过这个
findAllPersonsNotVisited():Observable<Person[]> {
var rightNow = new Date();
var res = rightNow.toISOString().slice(0,10).replace(/-/g,"-");
return this.db.list('person/' + res)
**.filter(
person => person.isVisitor === false
)**
.do(console.log)
.map(Person.fromJsonList);
}
之后
ngOnInit() {
this.allPersonsIsVisited = this.allPersons.filter(
person => person.isVisited === false);
}
并且数组始终为空。请告诉我我必须做什么
答案 0 :(得分:1)
您尚未订阅 Observable ,请使用以下代码
this.serviceName.
findAllPersonsNotVisited
.subscribe((data) => {this.allPersons = data},
(error)=> console.log(error),
(completion) => this.filterData());
使用私有方法在lodash的帮助下提取所需的结果
private filterData() {
this.allPersons.forEach((person)=>{
let p1=_.find(person,{isVisted : false});
if(!_.isEmpty(p1)) this.allPersonsIsVisited.push(p1);
})
}
答案 1 :(得分:0)
验证person.isVisited
的真实JavaScript类型(不是TypeScript类型)。可能它不是布尔值,使用===
的比较总是返回false。例如,生成的JS代码正在尝试比较0 === false
。您也可以尝试将===
替换为==
。
从MDN关于===
:如果操作数严格相等而没有类型转换,则identity运算符返回true。