2017-09-06 3 views
0

私はこの方法があります。こののstartsWith(event.query)私はshowFilterは[「アイテム」]を使用するには、1であるかどうかを確認したいので複数のフィールドにフィルタを使用するには?

search(event) { 
     let uniqueArray = []; 
     this.autocompletedata.filter((entry) => { 
      console.log('entryyyy', entry); 
       this.results = entry['items'].filter(a => this.showFilter == 1 ? a['item'].startsWith(event.query) : 
        this.showFilter == 2 ? a['service'].startsWith(event.query) : 
        this.showFilter == 3 ? a['phoneNum'].startsWith(event.query) : false); 
        const curr: string[] = this.results.map(data => data.item ? data.item : 
        data.service ? data.service : data.phoneNum ? data.phoneNum : false); 
        this.results = curr.filter((x, i, a) => x && a.indexOf(x) === i); 
     }); 

     console.log(this.results); 

    } 

をしてfiiterは、[「を使用することが2である場合。その上でサービス ']のstartsWith(event.query)と..

+0

*確認したいフィールドが複数あり、それらもマップしています*:達成したいことをより明確に説明できますか?入力例と出力例は? –

+0

私の質問を更新 – None

答えて

1

私はここにコードをフィルタリングし、いくつかの例があります。https://blogs.msmvps.com/deborahk/filtering-in-angular/

これは、複数の条件を指定してフィルタリングに関する情報が含まれています

performFilter(filterBy: string): IProduct[] { 
    filterBy = filterBy.toLocaleLowerCase(); 
    return this.products.filter((product: IProduct) => 
      product.productName.toLocaleLowerCase().indexOf(filterBy) !== -1 || 
      product.description.toLocaleLowerCase().indexOf(filterBy) !== -1); 
} 

あなたの質問へのコメントで述べたように、あなたが投稿したコードから必要なものを正確に作るのは難しいです。しかし、うまくいけば、この例は正しい軌道に乗ります。

さらに、いくつかの例についてはブログの記事をご覧ください。

+0

thats私が必要なもの:D – None

関連する問題