Javascript 为带有括号符号的对象赋值

Javascript 为带有括号符号的对象赋值,javascript,chart.js,Javascript,Chart.js,我正在尝试编写一个应用程序,允许人们在表单中插入数据,这将通过chart.js绘制图表。如果没有多个数据集,我可以,但如果有,我会查找“/”并将值放入数组中。我遇到的问题是,我似乎无法获取此表单数据。ie我加载的图表最初正确设置了两个数据集。但我尝试过使用以下代码: formData[index].value.forEach(function (value, dataset_index) { console.log(formData[index].

我正在尝试编写一个应用程序,允许人们在表单中插入数据,这将通过chart.js绘制图表。如果没有多个数据集,我可以,但如果有,我会查找“/”并将值放入数组中。我遇到的问题是,我似乎无法获取此表单数据。ie我加载的图表最初正确设置了两个数据集。但我尝试过使用以下代码:

formData[index].value.forEach(function (value, dataset_index) {
                        console.log(formData[index].name);
                        chartData.datasets[dataset_index][formData[index].name] = value; // Problem Line
我得到错误“TypeError:chartData.dataset[dataset_index]未定义”。我已经尝试了这个括号符号的多种排列,并得到了类似的错误

///public/main.js
常量图表数据={
标签:['M','T','W','T','F','S','S'],
数据集:[{
标签:“苹果”,
数据:[12,19,3,17,6,3,7],
背景颜色:“rgba(153255,51,0.4)”
}, {
标签:“橙子”,
数据:[2,29,5,5,2,3,10],
背景颜色:“rgba(255153,0,0.4)”
}]
};
让选项={
比例:{
雅克斯:[{
滴答声:{
贝吉纳泽罗:是的
}
}]
}
};
const ctx=document.getElementById(“myChart”).getContext(“2d”);
让myChart=新图表(ctx{
类型:'bar',
数据:图表数据,
选项:选项
});
//从表单中获取图表信息
$(文档).ready(函数(){
$(“#render_btn”)。在(“单击”上,函数(e){
e、 预防默认值();
//首先从页面上抓取表单数据
const formData=$('form').serializeArray();
//从表单数据中单独获取图表类型和选项
const chartTypeControl=document.getElementById(“图表类型”);
常量chartType=chartTypeControl.options[chartTypeControl.selectedIndex].value;
选项=document.getElementById(“图表选项”).value;
//创建图表构造函数要使用的数据对象
让datasetsItem={};
//将formData数组转换为chartData对象
forEach(函数(值、索引){
if(formData[index].name='labels'| | formData[index].name='options'){
chartData[(formData[index].name)]=formData[index].value;
}否则{
//检查此表单值是否有多个数据集(有“/”),如果有
//将字符串拆分为单独的数据集
if(formData[index].value.indexOf('/')>-1){
//将字段拆分为单独的数组项
formData[index].value=splitString(formData[index].value'/');
//现在将数组项放入各自的数据集中
formData[index].value.forEach(函数(值,数据集\索引){
datasetsItem[formData[index].name]=值;
//log(datasetsItem[formData[index].name]);
chartData.datasets[dataset_index]=datasetsItem;
});
}否则{
datasetsItem[formData[index].name]=formData[index].value;
chartData.datasets[0]=datasetsItem;
}
}
});
// =====================================================================================
//现在我们必须进行一些转换,即chartData。标签必须转换为数组
//从字符串等==================================================================
chartData.datasets[0].backgroundColor=splitString(chartData.datasets[0].backgroundColor);
chartData.datasets[0].borderColor=splitString(chartData.datasets[0].borderColor);
chartData.datasets[0].data=strToNumberArray(chartData.datasets[0].data);
chartData.labels=splitString(chartData.labels);
chartData.datasets[0].borderWidth=strToNumber(chartData.datasets[0].borderWidth);
if(isNaN(chartData.datasets[0].borderWidth)){
警告(“注意:边框宽度需要是一个数字。”);
}
//检查是否成功
试一试{
if(!(chartData.datasets[0].data)| |!(chartData.labels)){
抛出新错误(“输入错误。重新检查表单数据”);
}
myChart.type=图表类型;
myChart.data=图表数据;
myChart.update();
}捕获(错误){
警报(错误);
}
// ============================================================= //
//======================================================================================================================================================//
// ============================================================= //
函数拆分字符串(strToSplit,separator=“,”){
如果(!strToSplit){
警报(“错误:您的一个必填字段为空。”);
返回“”;
}
//测试字符串中的“,”或“/”斜杠
常量结果=/[,\/]/g.test(strToSplit);
如果(!结果){
//数据表单中只有一个条目
返回strotsplit;
}
//将字符串拆分为数组并修剪任何空格
让arrayOfStrings=strToSplit.split(分隔符);
forEach(函数(值、索引){
ArrayOfString[index]=value.trim();
});
返回数组字符串;
}
//函数将字符串转换为数组,然后将每个元素转换为数字
函数strToNumberArray(str,分隔符=','){
如果(str==未定义){
警报('错误:字符串为空');
返回“”;
}
//测试字符串中是否有逗号
常量结果=/,+/.测试(str);
如果(!结果){
警报(${str}`中缺少逗号分隔符);
返回false;
}
让arrayOfNumbers=str.split(分隔符).map(编号);
返回arrayOfNumber;
}
//函数将字符串类型转换为数字
函数strotnumber(str){
数量(str);
返回str;
}
//function从字符串中删除所有空白
函数removeWhiteSpace(str){
str.replace(/\s+/g',);
返回str;
}
// ============================================================== //
//======================================================================//
// ============================================================== //
});//结束。单击
});

输入值:
图表类型
图表类型
var data = {};
data[formData[index].name] = value;
chartData.datasets[dataset_index] = data;