2017-12-03 11 views
0

私のアングル4コンポーネントで私のアレイをフィルタリングしようとしています。配列も配列である自体の特性を有する:jsのオブジェクトの配列をフィルタリングする方法は?

export const data = [ 
    { 
    "number": "1", 
    "lines": [ 
     "aaaaabbbb bbbbb ccccc ddddd", 
     "aaaaabbbb bbbbb ccccc ddddd", 
     "aaaaabbbb bbbbb ccccc ddddd", 

    ] 
    } 
    , 
    { 
    "number": "2", 
    "lines": [ 
     "aaaaabbbb bbbbb ccccc ddddd", 
     "aaaaabbbb bbbbb ccccc ddddd", 
     "aaaaabbbb bbbbb ccccc ddddd", 

    ] 
    } 
    , 
    { 
    "number": "3", 
    "lines": [ 
     "aaaaabbbb bbbbb ccccc ddddd", 
     "aaaaabbbb bbbbb ccccc ddddd", 
     "aaaaabbbb bbbbb ccccc ddddd", 
    ] 
    } 
    ] 

これはcomponent.htmlの一部である:

<input (keyup)="search($event.target.value)" /> 
<tr *ngFor="let item of filteredData"> 
     <td>{{item.number}}</td> 
     <td>{{item.lines}}</td> 
</tr> 

これは、フィルタ/検索TS-コードの一部である:

export class AppComponent { 
    filteredData = data; 

    search(val: any) { 
      let ind = false; 
      console.log(val); 
      if (!val) this.filteredData = this.data; 
      //this statement does not work: 
      this.filteredData = this.data.filter(item=> item.lines.indexOf(val) >=0) 
    } 
} 

データをフィルタリングするにはどうすればよいですか?フィルターステートメントの詳細については、角度コードを無視してください。 item.lines.indexOf(val)に基づい

+0

? –

+0

私は質問を更新しました。たとえば、「bbbbb」を検索すると、何も返されません。 –

答えて

1

何かを意図していない

this.filteredData = this.data.filter((item) => { 
    return item.lines.filter((inner) => { 
    return inner.includes(val); 
    }).length > 0; 
}); 

またはあなたの現在のコードと間違って何

for (const item of this.data) { 
    for (const inner of item.lines) { 
    if (inner.includes(val)) { 
     return item; 
    } 
    } 
} 
1

フィルタリングを効果的に言っている:

は私にitem.lines内のオブジェクトの少なくとも一つがvalに等しい項目だけを与えます。

これはある、あなたが何をしようとして同じではありません。

item.lines内のオブジェクトの少なくとも一方がサブとしてval含まれている項目のみを与えます。

item => item.lines.includes(line => line.indexOf(val) >= 0) 

誤っむしろアレイ上のメソッドを呼び出している。このような問題点:これらの行は*動作するはずです一人で何か - あなたが意図した結果を得るためにもitem.linesを反復処理する必要が

エラーが発生する可能性があるため、その内容は通常簡単に見つけることができます。これはArrayStringの両方にindexOfというメソッドがあります。

*はしゃれこのような

関連する問題