Javascript 无法在chart.js中设置数据集值

Javascript 无法在chart.js中设置数据集值,javascript,arrays,chart.js,Javascript,Arrays,Chart.js,我想动态设置chart.js的dataset值,以创建一个条形图,我正试图使用以下代码来实现 getmths(); mthlen=marr.length; xdistid=$('#mdistid').val(); mdistid=xdistid.split(','); mdilen=mdistid.length; var distdata=[]; for(i=0;i<mdilen;i++) { glc=mdistid[i]; for(j=0;j<mthlen;j++) { mth=m

我想动态设置chart.js的dataset值,以创建一个条形图,我正试图使用以下代码来实现

getmths();
mthlen=marr.length;
xdistid=$('#mdistid').val();
mdistid=xdistid.split(',');
mdilen=mdistid.length;
var distdata=[];
for(i=0;i<mdilen;i++)
{
glc=mdistid[i];
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;
case '9':
distdata[j]=$('#qty9'+glc).val();
break;
case '10':
distdata[j]=$('#qty10'+glc).val();
break;
case '11':
distdata[j]=$('#qty11'+glc).val();
break;
case '12':
distdata[j]=$('#qty12'+glc).val();
break;
}

}
//Month Loop Ends here;

alert("Distributor data:"+distdata);

if(i==0)
{
datasetValue[0]=
{
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
};  
}
if(i==1)
{
datasetValue[1]=
{
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
};  
}

}
//Distributor Loop Ends here;

alert("Datasets: "+datasetValue[0].data);
alert(datasetValue.length);
mkchart();
mklinechart();
我的问题是,当我检查datasetValue[0]的值时,循环完成后。数据我得到的值与datasetValue[1]的值相同。数据请帮助我解决此问题………提前感谢

我的问题是在循环结束后,当我检查 datasetValue[0]的值。我获取的数据值与sholud的值相同 属于datasetValue[1]。数据

您的问题是将两个图表数据集的数据设置为相同的数组对象数据。更新数组时,两个数据集的数据对象都会更改,因为它们有两个变量指向同一个对象

当您将distdata指定给数据集的data属性时,可以通过创建distdata的副本轻松解决此问题。要做到这一点,最简单的方法是使用slice see了解更多方法

简而言之,将数据集分配更改为这样,请注意额外的.slice


那很好。完全没有切片还是第二个没有切片?如果您有两个阵列,那么第二个切片实际上不是必需的-我只是将其包括在内,因为它使其一致性和易于维护
...
if (i == 0) {
    datasetValue[0] =
    {
        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.slice()
    };
}
if (i == 1) {
    datasetValue[1] =
    {
        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.slice()
    };
}
...