2017-03-18 12 views
0

TypeScriptで配列をフィルタリングする方法。私はこの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

の助けを借りて、必要な結果を抽出するために、プライベートメソッドを使用して、以下のコード

this.serviceName. findAllPersonsNotVisited .subscribe((data) => {this.allPersons = data}, (error)=> console.log(error), (completion) => this.filterData()); 

を使用します。まずallPersons配列に何かがありますか? – toskv

+0

はい、フィルタを使用しないとすべての人が表示されます。しかし、フィルターでは何も見えません –

答えて

1

は、多かれ少なかれOKに見えるlodash

private filterData() { 
    this.allPersons.forEach((person)=>{ 
     let p1=_.find(person,{isVisted : false}); 
     if(!_.isEmpty(p1)) this.allPersonsIsVisited.push(p1); 
    }) 
} 
0

person.isVisitedの実際のJavaScriptタイプ(タイプスクリプトタイプではない)を確認してください。おそらくブール値ではなく、===を使った比較は常にfalseを返します。たとえば、生成されたJSコードは0 === falseを比較しようとしています。 =====に置き換えることもできます。

からMDN===:オペランドが型変換なしと厳密に等しい場合、同一性演算子は真を返します。あなたは観察可能に加入されていない

関連する問題