簡體   English   中英

如何更改數組內 object 的屬性值

[英]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 } } ]

請幫我糾正這個問題或給我一些提示如何解決它。

提前致謝

您在第一個循環完成后運行第二個循環,因此變量QUALITYNAMErates_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM