Javascript 切换序列时避免数据重置

Javascript 切换序列时避免数据重置,javascript,linechart,chart.js,Javascript,Linechart,Chart.js,在这种情况下,当您切换序列时,其他序列将重置为初始值,而不是为自己添加新值。 如何避免这种行为 在enableCheck中清空或重置相应的数据集之前,需要存储每个系列数据的当前状态。然后使用此保存状态 SP数据集示例 状态的初始化(spData)。我还初始化数据集(SP) 保存状态(在enableCheck()中)-我从实际数据点获取值 if (SP.data) currentChart.datasets.forEach(function (d) { if (d.label === 'M

在这种情况下,当您切换序列时,其他序列将重置为初始值,而不是为自己添加新值。
如何避免这种行为

在enableCheck中清空或重置相应的数据集之前,需要存储每个系列数据的当前状态。然后使用此保存状态

SP数据集示例

状态的初始化(spData)。我还初始化数据集(SP)

保存状态(在enableCheck()中)-我从实际数据点获取值

if (SP.data) currentChart.datasets.forEach(function (d) {
    if (d.label === 'My First dataset') {
        spData = d.points.map(function (e) {
            return e.value
        });
    }
})
使用此保存状态(在enableCheck()中)

如果还希望为隐藏序列插入新值,请在setTimeout中更新数据插入语句

var d = []
if (First) d.push(randomScalingFactor())
else {
    spData.shift()
    spData.push(randomScalingFactor())
}
if (Second) d.push(randomScalingFactor())
else {
    ncData.shift()
    ncData.push(randomScalingFactor())
}
if (Third) d.push(randomScalingFactor())
else {
    spaData.shift()
    spaData.push(randomScalingFactor())
}

使用小提琴-

顺便说一句,您可能希望重构小提琴并简化它。否则,其他人就有点难以回答,除非他们已经看过前面所有的问题:-)。另外,一定要在问题中重新发布代码-人们倾向于跳过仅使用小提琴的问题谢谢提示。非常好!你真是个天才。唯一的错误是,如果我隐藏了一个系列,等待n-update,然后重新显示它,这将从最后显示的值开始。
SP = {
    label: "My First dataset",
    fillColor: "rgba(0,0,0,0)",
    strokeColor: "rgba(220,0,0,1)",
    pointColor: "rgba(220,0,0,1)",
    pointStrokeColor: "#fff",
    pointHighlightFill: "#fff",
    pointHighlightStroke: "rgba(220,0,0,1)",
    data: spData
};
var d = []
if (First) d.push(randomScalingFactor())
else {
    spData.shift()
    spData.push(randomScalingFactor())
}
if (Second) d.push(randomScalingFactor())
else {
    ncData.shift()
    ncData.push(randomScalingFactor())
}
if (Third) d.push(randomScalingFactor())
else {
    spaData.shift()
    spaData.push(randomScalingFactor())
}