Javascript ChartJS使用多个数据集更新图表

Javascript ChartJS使用多个数据集更新图表,javascript,json,chart.js,Javascript,Json,Chart.js,因此,我想更新图表中的两个数据集(我不想先销毁然后再重新创建) 当我尝试设置第二个数据集(chart2.data.datasets[1]=data.traffic_tx;)时,崩溃不会更新(所有数据都是空的) 在最近30分钟内搜索解决方案。您可以循环浏览图表以一起更新它们 以下是ChartJS中的一段代码: 您可能还需要检查并查看是否正在访问正确的变量。您是要替换数据集中的整个数据对象,还是要更新数据集。数据属性?您可以在图表中循环更新它们 以下是ChartJS中的一段代码: 您可能还需要检查并

因此,我想更新图表中的两个数据集(我不想先销毁然后再重新创建)

当我尝试设置第二个数据集
(chart2.data.datasets[1]=data.traffic_tx;)
时,崩溃不会更新(所有数据都是空的)


在最近30分钟内搜索解决方案。

您可以循环浏览图表以一起更新它们

以下是ChartJS中的一段代码:


您可能还需要检查并查看是否正在访问正确的变量。您是要替换数据集中的整个
数据
对象,还是要更新
数据集。数据
属性?

您可以在图表中循环更新它们

以下是ChartJS中的一段代码:


您可能还需要检查并查看是否正在访问正确的变量。您是在尝试替换数据集中的整个
数据
对象,还是在尝试更新
数据集。数据
属性?

这可能很旧,但我遇到了同样的问题,即使在2年后(这个问题存在),我也无法轻松找到好的答案。最终我做到了,所以它就在这里,如果不是为了别的什么,而是为了让别人觉得更容易

var this_data=[50,100];    //data to be loaded on the different datasets. this_data[0] to be loaded in dataset[0], this_data[1] to be loaded in dataset[1] and so on
var this_cntr;             //a counter to iterate over this_data


this_cntr= 0;
myChart.data.datasets.forEach(iterate);
//myChart.data.labels.push('label_name');   //these are to update the graph
//myChart.update('none');


function iterate(item) {
    item.data.push(this_data[this_cntr]);
    this_cntr= this_cntr+ 1
}

可能有一个速记版本,我不太喜欢速记。也许其他人也能做到。

这可能有点老了,但我也有同样的问题,即使在2年后(这个问题存在),我也很难找到一个好的答案。最终我做到了,所以它就在这里,如果不是为了别的什么,而是为了让别人觉得更容易

var this_data=[50,100];    //data to be loaded on the different datasets. this_data[0] to be loaded in dataset[0], this_data[1] to be loaded in dataset[1] and so on
var this_cntr;             //a counter to iterate over this_data


this_cntr= 0;
myChart.data.datasets.forEach(iterate);
//myChart.data.labels.push('label_name');   //these are to update the graph
//myChart.update('none');


function iterate(item) {
    item.data.push(this_data[this_cntr]);
    this_cntr= this_cntr+ 1
}

可能有一个速记版本,我不太喜欢速记。也许其他人可以做到。

检查
数据集的长度。如果第二个
数据
键不存在,则创建它

let length = chart2.data.datasets.length;
if (length > 1) {
   chart2.data.datasets[1] = data.traffic_tx;
} else {
   chart2.data.datasets[] = {data: data.traffic_tx};
}
或者更具活力的东西:

let length = chart2.data.datasets.length;
let i = 0;
Object.entries(data).forEach([key, value] => {
    if (i < length) {
        chart2.data.datasets[i] = value;
    } else {
        chart2.data.datasets[] = {data: value};
    }
    i++;
});
let length=chart2.data.datasets.length;
设i=0;
Object.entries(data).forEach([key,value]=>{
如果(i<长度){
图表2.数据.数据集[i]=值;
}否则{
图表2.data.datasets[]={data:value};
}
i++;
});

检查
数据集的长度。如果第二个
数据
键不存在,则创建它

let length = chart2.data.datasets.length;
if (length > 1) {
   chart2.data.datasets[1] = data.traffic_tx;
} else {
   chart2.data.datasets[] = {data: data.traffic_tx};
}
或者更具活力的东西:

let length = chart2.data.datasets.length;
let i = 0;
Object.entries(data).forEach([key, value] => {
    if (i < length) {
        chart2.data.datasets[i] = value;
    } else {
        chart2.data.datasets[] = {data: value};
    }
    i++;
});
let length=chart2.data.datasets.length;
设i=0;
Object.entries(data).forEach([key,value]=>{
如果(i<长度){
图表2.数据.数据集[i]=值;
}否则{
图表2.data.datasets[]={data:value};
}
i++;
});

这并不能回答问题。这将使用相同的数据更新数据,而不考虑数据系列,因为它将迭代所有数据集,并将相同的变量推送到所有系列的最后一个数组元素。这并不能回答问题。这将使用相同的数据更新数据,而不考虑数据系列,因为它迭代所有数据集,并将相同的变量推送到所有系列的最后一个数组元素。