Javascript 如何使用数组在chart.js中动态创建数据集?

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];

我试图使用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];
        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