Javascript 无法在chart.js中设置数据集值
我想动态设置chart.js的dataset值,以创建一个条形图,我正试图使用以下代码来实现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
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()
};
}
...