[英]How to change the value of property of object which is inside the array
我正在嘗試更改 object 的屬性值,該屬性位於數組內部,並且該數組也在一個 object 內部。
我寫下面的代碼來解決問題,但它只需要最后一個值。
我的代碼
var arr = [{ QUALITYNAME: "Berry Fancy", RATES: [{ "UNIT": "LB", "CURRENCY": "USD", "VALUE": 6.205240232694746 }] }, { QUALITYNAME: "Berry USDA", RATES: [{ "UNIT": "LB", "CURRENCY": "USD", "VALUE": 5.622770183585882 }] } ]; var value_a1 = null for (let i = 0; i < arr.length; i++) { var result = arr[i].RATES; var QUALITYNAME = arr[i].QUALITYNAME; console.log("result", result); result.forEach((element, index) => { value_a1 = element.VALUE; value_a1 = parseFloat(value_a1.toFixed(2)) console.log('value_a1', value_a1); }); } arr.forEach(function(item, index) { arr[index] = { QUALITYNAME: QUALITYNAME, RATES: { "UNIT": "LB", "CURRENCY": "USD", "VALUE": value_a1 } }; }); console.log(arr);
這給了我 output 作為
result arr = [ { QUALITYNAME: 'Berry USDA',
RATES: { UNIT: 'LB', CURRENCY: 'USD', VALUE: 5.62 } },
{ QUALITYNAME: 'Berry USDA',
RATES: { UNIT: 'LB', CURRENCY: 'USD', VALUE: 5.62 } } ]
但是我需要它的第一個值也存在於結果如下
result arr = [ { QUALITYNAME: 'Berry Fancy',
RATES: { UNIT: 'LB', CURRENCY: 'USD', VALUE: 6.21 } },
{ QUALITYNAME: 'Berry USDA',
RATES: { UNIT: 'LB', CURRENCY: 'USD', VALUE: 5.62 } } ]
請幫我糾正這個問題或給我一些提示如何解決它。
提前致謝
您在第一個循環完成后運行第二個循環,因此變量QUALITYNAME
和rates_a1
具有上次迭代的值。
您可以簡單地從數組中提取 object 並在第一個循環中對其進行修改。
var arr = [{ QUALITYNAME: "Berry Fancy", RATES: [{ "UNIT": "LB", "CURRENCY": "USD", "VALUE": 6.205240232694746 }] }, { QUALITYNAME: "Berry USDA", RATES: [{ "UNIT": "LB", "CURRENCY": "USD", "VALUE": 5.622770183585882 }] } ]; var value_a1 = null for (let i = 0; i < arr.length; i++) { var result = arr[i].RATES[0]; if (result) { result.VALUE = parseFloat(result.VALUE.toFixed(2)); } arr[i].RATES = result; } console.log(arr);
如果我理解正確,您只是想將所有費率四舍五入到小數點后兩位,您可以使用如下嵌套循環來實現:
var arr = [{
QUALITYNAME: "Berry Fancy",
RATES: [{
"UNIT": "LB",
"CURRENCY": "USD",
"VALUE": 6.205240232694746
}]
},
{
QUALITYNAME: "Berry USDA",
RATES: [{
"UNIT": "LB",
"CURRENCY": "USD",
"VALUE": 5.622770183585882
}]
}
]
// Loop through each array item
arr.forEach((item) => {
// Loop through each rate inside the item
item.RATES.forEach((rate) => {
// Round to two decimals
rate.VALUE = parseFloat(rate.VALUE.toFixed(2))
});
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.