You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chart.js中两个图表共用同一数据集是否会同步发生变更?

问题答案

核心结论

两个图表会共享你传入的data对象,修改该对象的内容会同时影响两个图表的展示。

具体原因

JavaScript中对象属于引用类型,你两次初始化Chart实例时,传入的data参数是同一个对象的内存引用,而非独立的深拷贝副本。Chart.js默认不会对传入配置里的data做额外的深克隆存储,两个实例都会直接绑定你外部声明的这个data对象。

你修改data里的labels、数据集数值后,只要分别调用两个图表实例的update()方法触发重绘,两个图表都会同步展示修改后的内容,不需要分别修改两个实例内部的data。

不需要共享data的处理方案

如果希望两个图表的data完全独立,每次初始化Chart时传入深拷贝后的data对象即可,示例写法:

// 写法1:用structuredClone做深拷贝(支持大部分常规数据结构)
new Chart(this.ctx1, {
  type: 'line',
  data: structuredClone(data),
})
new Chart(this.ctx2, {
  type: 'line',
  data: structuredClone(data),
})

// 写法2:简单结构用JSON序列化反序列化实现深拷贝
new Chart(this.ctx, {
  type: 'line',
  data: JSON.parse(JSON.stringify(data)),
})

内容的提问来源于stack exchange,提问作者Duck_Commander

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:06:02