Javascript 对象结构在内部发生了变化

Javascript 对象结构在内部发生了变化,javascript,highcharts,Javascript,Highcharts,我试图从一个对象填充Highcharts。最初加载的图表很好,但随后源对象发生了更改。如果您愿意检查代码并执行以下操作,则有点难说: 按预期点击按钮1=>图表加载数据[687687] 按预期点击按钮2=>图表加载数据[546546] 再次单击按钮1=>因为getAllData.T1.C1.M1现在从[687687]更改为[Object,Object],所以什么也不会发生 再次单击按钮2=>图表加载数据[546546](请参阅下面的console.log输出) 谁能解释一下吗 下面是控制台。每次

我试图从一个对象填充Highcharts。最初加载的图表很好,但随后源对象发生了更改。如果您愿意检查代码并执行以下操作,则有点难说:

按预期点击按钮1=>图表加载数据
[687687]

按预期点击按钮2=>图表加载数据
[546546]

再次单击按钮1=>因为
getAllData.T1.C1.M1
现在从
[687687]
更改为
[Object,Object]
,所以什么也不会发生

再次单击按钮2=>图表加载数据
[546546]
(请参阅下面的
console.log
输出)

谁能解释一下吗

下面是
控制台。每次点击按钮,我都会进入我的Chrome

[687, 687]
[546, 546]
[Object, Object]
  0: Object
    y: 687
    __proto__: Object
  1: Object
    y: 687
    __proto__: Object
  length: 2
  __proto__: Array[0]
[546, 546]

正如我在评论中提到的,您需要将的updatePoints参数设置为
false
,以防止Highcharts简单地更新现有数据点(这是因为您的数据集长度相同)

像这样的东西应该足够了,并保留动画

chart.series[0].setData(data[0], false, false, false);
chart.redraw();

updatePoint方法中一定有错误。
尝试以下操作:
chart.series[0].setData(数据[0],真,假,假)(数据、重画、动画、更新点)

您需要将第四个参数(更新点)设置为
false
。。你能详细说明一下那是什么吗?我读了Highcharts的文档,但不明白。是的,它确实有效。。因此,“更新现有数据点”意味着它只是更改源(询问我的学习目的)?另外,第三个参数不应该为真以保留动画吗?@AbdFahim使用默认的更新点时,Highcharts直接修改传入的数据数组。因为这些在JavaScript中是通过引用传递的,这意味着原始数组被修改了。@AbdFahim实际上对于动画传递什么并不重要,因为当updatePoints为
false
时,它在内部被设置为
false
。这就是为什么我将redraw设置为
false
并调用
chart.redraw()
。@Phil。。谢谢你的解释。但不幸的是,就像你说的,我失去了漂亮的动画。顺便说一句,想想为什么updatePoints=true会导致嵌套数组?例如,原始数组是[],当它更新数组时,它将变成[]、[]]!还有,为什么其他系列没有这个问题?事实上,如果您有4个数组,那么只有第一个数组(第一次单击)会受到影响。JSFIDLE:这绝对不是一个bug。这个答案是有效的,但你会失去动画这就是为什么我在我的答案中列出了参数,所以任何阅读它的人都可以选择他们的偏好,而无需查找那些假/真的意思。可能不是一个bug,但是编码很差。