2016-04-12 14 views
1
[{id:1,price:10},{id:2,price:20}] 

ID 2のオブジェクトの配列に対して価格を200に更新するにはどうすればよいですか?ループを使用してjsonプロパティ値を更新する

var obj = [{id:1,price:10},{id:2,price:20}]; 
for(var i=0;i<obj.length;i++){ 
     if(obj[i].id == 2){ 
      //what to do here? 
     } 
     } 

私はプッシュおよびスプライスなどを進めることができますが、課題はあまりにもポジションを維持することです。

答えて

0

か短い:

var obj = [{ id: 1, price: 10 }, { id: 2, price: 20 }]; 
 

 
obj.forEach(function (a) { 
 
    if (a.id === 2) { 
 
     a.price = 200; 
 
    } 
 
}); 
 

 
document.write('<pre>' + JSON.stringify(obj, 0, 4) + '</pre>');

+0

これはきれいですが、すべてのブラウザでそれぞれ対応していますか? –

+0

ここをクリックしてください:[ブラウザ互換性](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach#Browser_compatibility) –

3

あなたが行うことができます(あなたが探していたものを見つけ以降)

obj[i].price = 200; 
break; 

ブレークは、すべての項目をループ継続することを防止することができます。

Array#forEach()
+0

私は、ループだけでもプロパティにアクセスするには、オブジェクトリテラルで必要とされるであろうとは思わない... – zer00ne

+0

はこれを行います返品虚偽と同じですか? –

0
[{id:1,price:10},{id:2,price:20}].forEach(function(a){ (a.id===2) ? a.price=200 : a}); 
関連する問題