[{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?
}
}
我可以繼續推送和拼接等,但挑戰是保持位置。
[{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?
}
}
我可以繼續推送和拼接等,但挑戰是保持位置。
或更短與Array#forEach()
:
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>');
你可以這樣做:
obj[i].price = 200;
break;
的突破將阻止你繼續遍歷所有的項目(因爲你發現你正在尋找的一個)。
我不認爲一個循環將甚至可以用一個對象文本只是訪問屬性需要... – zer00ne
做到這一點與返回錯誤一樣? –
[{id:1,price:10},{id:2,price:20}].forEach(function(a){ (a.id===2) ? a.price=200 : a});
這是更清潔,是爲所有瀏覽器支持? –
請看看這裏:[瀏覽器兼容性](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach#Browser_compatibility) –