2016-04-19 11 views
2

ユニークな値を配列にプッシュする単純なケースがあります。それは次のようになります:Array.push()とユニークなアイテム

this.items = []; 

    add(item) { 
    if(this.items.indexOf(item) > -1) { 
     this.items.push(item); 
     console.log(this.items); 
    } 
    } 

かなりまっすぐに見えますか?いいえ、現れます。値を追加しません。私はそれが私の側で何らかの愚かな間違いだと確信していますが、私はそれを見つけるように見えません。

答えて

7

が含まれていないdoest等しいですこのアイテムはすでに存在し、追加してください。それはその反対でなければなりません。

変更をする...

if (this.items.indexOf(item) == -1) { 
    this.items.push(item); 
} 
+0

のために使用できるデータ構造を、設定していると思い、私は私が考えていたかわかりません!ありがとう! –

2

ある場合は、== -1使用する必要がありますが-1にあなたのロジックがあれば「、と言っているうん、その小さなミス

if(this.items.indexOf(item) === -1) { 
     this.items.push(item); 
     console.log(this.items); 
    } 
2

あなたの配列に

this.items = []; 

    add(item) { 
    if(this.items.indexOf(item) == -1) { 
     this.items.push(item); 
     console.log(this.items); 
    } 
    } 
0

これは、あなたの質問に答えるが、あなたが追加しているのindexOfアイテムは-1を返し続ければそうかわかりません。 jsに精通しているわけではありませんが、配列にまだ含まれていないため、アイテムはそうしているようです。私は少し修正されたコードのjsfiddleを作った。

this.items = []; 

add(1); 
add(2); 
add(3); 

document.write("added items to array"); 
document.write("<br>"); 
function add(item) { 
     //document.write(this.items.indexOf(item)); 
    if(this.items.indexOf(item) <= -1) { 

     this.items.push(item); 
     //document.write("Hello World!"); 
    } 
} 

document.write("array is : " + this.items); 

https://jsfiddle.net/jmpalmisano/Lnommkbw/2/

1

私はES6はハハあなたが一意のエントリ

+0

'Set()'はい、配列が必要でした。 –

+0

セットは配列でもあり、シーケンシャルデータを格納しますが、重複しないユニークなものだけを格納します。 – dearvivekkumar

関連する問題