2017-03-23 10 views
0

に存在する場合、私はいくつかの基準に従って配列をフィルタリングし、角2で、このパイプをしたチェック角度2本のパイプは、値がすでに配列

export class AppComponent { 
    title = 'app works!'; 
    values=['east', 'middle east']; 

    onClick(val) 
    { 
    // if(val==null) 
    // { 
    // return null; 
    // } 
    // val=this.values.indexOf(values) 
    this.values.push(val); 

    //this.values.push(val); 
    //console.log(val) 
    } 

<input type="text" [(ngModel)]="val"> 
<hr> 
<button type="button" class="btn btn-primary" (click)="onClick(val)">Add Item</button> 
<hr> 
<h1> 
    <li *ngFor="let item of values | filter: 'e'">{{item}}</li> 
</h1> 

ザのonClick()メソッドは次のスクリプトで表されるのみ文字eで始まる値を表示します

フィルターに条件を追加して、配列に既存の値があるかどうかを確認したい。たとえ文字eで始まっていても、配列に追加しない。

私はのonClick()メソッドで次のように試みたが、それは働いていなかったとエラーが表示されませんでした:

onClick(val) 
    { 
    if(val==null) 
    { 
     return null; 
    } 
    else{ 
     if(val==this.values.indexOf(this.values)) 
     { 
      return null; 
     } 
     else 
     { 
      this.values.push(val); 
     } 
    } 

だから私は、パイプに次を追加しました:

if(item.match(args[0])) 
    { 
     return null; 
    } 

そして、まだエラーなしで動作しませんでした。あなたのパイプで

+0

あなたが正しく理解していれば、既存の要素を値配列にプッシュしないようにしたいですか?次のようにすることができます: 'onClick(val){if(this.values.indexOf(val)=== -1){this.values.push(val); }} ' –

+0

ええ、私は関数ではないパイプスクリプトでそれを行う必要があります – droidnation

答えて

3

あなたはフィルタあなたの配列のユニークな要素と重複を削除することができます

let uniqueArray = value.filter(function (el, index, array) { 
    return array.indexOf (el) == index; 
}); 

は、その後、あなたの特定の文字列で始まるこれらの要素をキャッチすることができます:

for (let item of uniqueArray) { 
    if (item.match("^"+args[0])) { 
     resultArray.push(item); 
    } 
} 

私は実際の例を作成しました:https://plnkr.co/edit/zqhFlTmp5YxABf4LVNUV?p=preview

実際のデータとフィルタリングされたデータを見ることができます。

+1

それです。ありがとうございます – droidnation

+0

あなたは大歓迎です:) –

関連する問題