Javascript 如何使用数组在chart.js中动态创建数据集?
我试图使用chart.js创建一个完整的图表数据集,但是我的数组中有重复的记录。以下是我的javascript代码:Javascript 如何使用数组在chart.js中动态创建数据集?,javascript,arrays,chart.js,Javascript,Arrays,Chart.js,我试图使用chart.js创建一个完整的图表数据集,但是我的数组中有重复的记录。以下是我的javascript代码: mdistid = []; distdata = []; datasetValue = []; for (i = 0; i < 2; i++) { glc = mdistid[i]; distdata.length = 0; for (j = 0; j < mthlen; j++) { mth = marr[j];
mdistid = [];
distdata = [];
datasetValue = [];
for (i = 0; i < 2; i++) {
glc = mdistid[i];
distdata.length = 0;
for (j = 0; j < mthlen; j++) {
mth = marr[j];
switch (mth) {
case '1':
distdata[j] = $('#qty1' + glc).val();
break;
case '2':
distdata[j] = $('#qty2' + glc).val();
break;
case '3':
distdata[j] = $('#qty3' + glc).val();
break;
case '4':
distdata[j] = $('#qty4' + glc).val();
break;
case '5':
distdata[j] = $('#qty5' + glc).val();
break;
case '6':
distdata[j] = $('#qty6' + glc).val();
break;
case '7':
distdata[j] = $('#qty7' + glc).val();
break;
case '8':
distdata[j] = $('#qty8' + glc).val();
break;
}
}
datasetValue[i] = {
label: "My Second dataset",
fillColor: "rgba(151,187,205,0.5)",
strokeColor: "rgba(151,187,205,0.8)",
highlightFill: "rgba(151,187,205,0.75)",
highlightStroke: "rgba(151,187,205,1)",
data: distdata
};
}
mdistid=[];
distdata=[];
数据集值=[];
对于(i=0;i<2;i++){
glc=mdistid[i];
distdata.length=0;
对于(j=0;j
问题是数组
datasetValue
只获取整个数组中的最后一个数据值。例如,如果数据的最后一个值是5,10,那么它会在所有数组中填充相同的值…我真的不知道为什么你会选择glc=mdistid[I]
,而数组mdistid
显然是空的。这就是为什么选择器$('#qty1'+glc)
失败的原因
此外,您还可以在jQuery选择器上使用字符串连接,例如:distdata[j]=$(“#qty'+mth+glc).val()代码>
您可以提供一些数据,但我们无法猜测marr
和mathlen
当数组mdistid
明显为空时,您为什么要使用glc=mdistid[I]
。这就是为什么选择器$('#qty1'+glc)
失败的原因
此外,您还可以在jQuery选择器上使用字符串连接,例如:distdata[j]=$(“#qty'+mth+glc).val()代码>
您可以提供一些数据,但我们无法猜测marr
和mathlen
我发现数组distdata=[]
的范围导致了问题。把它放在内部循环之前,它就工作了。我发现数组distdata=[]
的作用域导致了问题。已将其放置在内部循环之前,并且可以正常工作。能否将“distdata=[];“place in”更改为“pls”?我认为没有必要更改distdata[];在for循环中。。。。。。。。。。为什么你会这样认为?你能把“distdata=[];“place in”改成“pls”吗?我认为没有必要改变distdata[]的位置;在for循环中。。。。。。。。。。为什么你会有这种感觉?实际上mdistd[]和marr[]每次都会保存一些数据,循环不会失败。。。。。。。。我的问题是,当我从查找(i=0;i<2;i++){}中出来时,我得到数组distdata[]的数据,并将该数据传递给我的datasetValue[i]={dataset:disdata}但在两个循环结束后,当我检查所有索引中的datasetValue数组时,数据保持不变,例如:假设当外部循环运行2次,内部循环运行3次时,两个循环结束后,我的datasetValue应该是这样的datasetValue[0]={标签:“我的第二个数据集”,fillColor:“rgba(151187205,0.5)”,strokeColor:“rgba(151187205,0.8)”,highlightFill:“rgba(151187205,0.75)”,highlightStroke:“rgba(151187205,1)”,数据:[500300.200]};和datasetValue[1]={label:“我的第二个数据集”,fillColor:“rgba(151187205,0.5)”,strokeColor:“rgba(151187205,0.8)”,highlightFill:“rgba(151187205,0.75)”,highlightStroke:“rgba(151187205,1)”,数据:[200100.250];不,实际上mdistd[]和marr[]每次都保存一些数据,循环不会失败。。。。。。。。我的问题是,当我从查找(i=0;i<2;i++){}中出来时,我得到数组distdata[]的数据,并将该数据传递给我的datasetValue[i]={dataset:disdata}但在两个循环结束后,当我检查所有索引中的datasetValue数组时,数据保持不变,例如:假设当外部循环运行2次,内部循环运行3次时,两个循环结束后,我的datasetValue应该是这样的datasetValue[0]={标签:“我的第二个数据集”,fillColor:“rgba(151187205,0.5)”,strokeColor:“rgba(151187205,0.8)”,highlightFill:“rgba(151187205,0.75)”,highlightStroke:“rgba(151187205,1)”,数据:[500300.200]};和datasetValue[1]={label:“我的第二个数据集”,fillColor:“rgba(151187205,0.5)”,strokeColor:“rgba(151187205,0.8)”,highlightFill:“rgba(151187205,0.75)”,highlightStroke:“rgba(151187205,1)”,数据:[200100.250];我说的是关于“distdata=[];”。不管怎样:DI说的是关于“distdata=[];”。不管怎样:D