2016-06-13 5 views
1

私はjavascriptで新しく質問があります。 私は要素の配列を持っていますが、配列に指定された要素が含まれているかどうかをテストしてから、新しい要素を追加しない場合はそれを更新します。JavaScript配列containsts要素

for (var i = 0; i < datasourcedatas.length; i++) { 
    alert(item.id+" itemid "+ datasourcedatas[i].id); 

    if(item.id==datasourcedatas[i].id){ 
     alert(item.id+" itemid "+ datasourcedatas[i].id+" boucle"); 
     datasourcedatas[i].produitqan=qan; 
     item.produitqan=qan; 
     break; 
    } 
    else { 
      cartDataSource.add(item); 
    }  
} 
+0

質問がありますか? –

答えて

2

なぜアイテムが繰り返し追加されるのか尋ねていると思います。

理由は、反復のエントリが一致しない場合は、ループの繰り返しごとにに追加するためです。

代わりに、ループを使用して配列にエントリが含まれているかどうかを確認し、ループしていない場合は以降を追加してください。

var found = false; 
for (var i = 0; i < datasourcedatas.length; i++) { 
    if (item.id == datasourcedatas[i].id) { 
     found = true; 
     datasourcedatas[i].produitqan = qan; 
     item.produitqan = qan; 
     break; 
    } 
} 
if (!found) { 
    cartDataSource.add(item); 
} 

技術的には、あなたがi使用することができ、found変数を必要としない:ES2015は、Array#findを追加したことを、このために有用であるとpolyfilled /シムことができ

​​

注意を:

var found = datasourcedatas.find(function(entry) { 
    return item.id == entry.id; 
}); 
if (found) { 
    found.produitqan = qan; 
    item.produitqan = qan; 
} else { 
    cartDataSource.add(item); 
} 
+0

ありがとう、私はそれを試してみます –