[英]How to add an object to an object array in javascript
我有這個對象
chartData = {
datasets: []
};
它旨在存儲Chart.js的數據集。 我使用以下代碼從表單輸入構建數據集:
formData[index].value.forEach(function (value, dataset_index) {
let data = {};
data[formData[index].name] = value;
chartData.datasets[dataset_index] = data;
});
我希望chartData.datasets具有以下結構:
datasets: [{
label: 'apples',
data: [12, 19, 3, 17, 6, 3, 7],
backgroundColor: "rgba(153,255,51,0.4)"
}, {
label: 'oranges',
data: [2, 29, 5, 5, 2, 3, 10],
backgroundColor: "rgba(255,153,0,0.4)"
}]
使用調試器,我看到那條線
"chartData.datasets[dataset_index] = data;"
第一次循環迭代后,覆蓋chartData.datasets[dataset_index]
的值。
因此,我認為“我需要將“數據”推送到數組對象上”。 錯誤。 當我嘗試
chartData.datasets[dataset_index].push(data);
我懂了
TypeError:chartData.datasets [dataset_index]未定義
有人知道將“數據”對象添加到chartData.datasets
數組的正確方法是什么嗎? 我嘗試了所有表示法的排列都無濟於事。 我假設Array方法對我不可用,因為chartData.datasets[dataset_index]
是一個對象? 搜索結果被證明是徒勞的。
更新:是的,我曾想過,但是沒有用。 然后,您將獲得帶有四個數組元素的chartData.datasets。 我只需要兩個元素。 請參閱問題中的數據結構。 在按照您的建議進行操作后,我還有調試控制台的快照。 如您所見,這與我想要的數據結構不同。
您需要將數據推送到datasets
數組中:
chartData.datasets.push(data)
根據我對您在此處描述的內容的理解,這是一個解決方案:
formData[index].value.forEach(function(value, dataset_index) {
let data = {};
data[formData[index].name] = value;
chartData.datasets[dataset_index] = Object.assign(chartData.datasets[dataset_index] || {}, data);
});
希望這對您有用!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.