如何在打字稿中过滤数组

时间:2017-03-18 14:47:42

标签: 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(
          person => person.isVisitor === false
        )**
        .do(console.log)
        .map(Person.fromJsonList);

}

之后

    ngOnInit() {
  this.allPersonsIsVisited = this.allPersons.filter(
          person => person.isVisited === false);
}

并且数组始终为空。请告诉我我必须做什么

2 个答案:

答案 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。