簡體   English   中英

如何在JavaScript中將對象添加到對象數組

[英]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。 我只需要兩個元素。 請參閱問題中的數據結構。 在按照您的建議進行操作后,我還有調試控制台的快照。 如您所見,這與我想要的數據結構不同。 調試控制台

更新II:這是表單輸入的序列化數組的快照: 在此處輸入圖片說明 希望這可以幫助。

更新III:這是formData [index] .value快照 formData [index] .value

您需要將數據推送到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.

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