Arrays 如何在typescript中过滤数组
如何在TypeScript中筛选数组。我试过这个Arrays 如何在typescript中过滤数组,arrays,typescript,filter,Arrays,Typescript,Filter,如何在TypeScript中筛选数组。我试过这个 findAllPersonsNotVisited():Observable<Person[]> { var rightNow = new Date(); var res = rightNow.toISOString().slice(0,10).replace(/-/g,"-"); return this.db.list('person/' + res) **.filter(
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);
}
数组总是空的。请告诉我必须做什么验证真实的JavaScript类型而不是person.isVisited的TypeScript类型。可能它不是布尔值,使用===的比较总是返回false。例如,生成的JS代码试图比较0===false。您还可以尝试将===替换为==
From about==:如果操作数严格相等且没有类型转换,则标识运算符返回true 如果您没有订阅可观察的,请使用以下代码
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);
})
}
看起来差不多。你确定allPersons数组中有什么东西可以开始吗?是的,因为如果我不使用过滤器,我会看到所有的人。但用过滤器我什么也看不见
private filterData() {
this.allPersons.forEach((person)=>{
let p1=_.find(person,{isVisted : false});
if(!_.isEmpty(p1)) this.allPersonsIsVisited.push(p1);
})
}