首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Highcharts中,使用Angular将绘制的数据单独乘以1000

在Highcharts中,使用Angular将绘制的数据单独乘以1000
EN

Stack Overflow用户
提问于 2020-11-12 01:45:00
回答 1查看 41关注 0票数 0

我尝试绘制的数据的形式如下:

代码语言:javascript
复制
[
    [24894174208.0, 1604842800],
    [24903880704.0, 1604843100]
]
代码语言:javascript
复制
where x = data points; y = UNIX_EPOC_Time

在绘图时,我交换x,y;以便在X-axis上绘制UNIX_EPOC_Time和在Y-axis上绘制数据点

我必须将UNIX_EPOC_Time乘以1000,因为: Javascript内部使用毫秒,而普通的UNIX时间戳通常以秒为单位。( Why do I need to multiply unix timestamps by 1000 in JavaScript? )

此外,我还试图在用点(黄色/橙色/红色)绘制的dataPoints中查找异常情况。

但是,在函数中

代码语言:javascript
复制
js[isIn(anomoly, point){...}]

在dataPoints中发现异常的地方,我看到数据点采用如下形式:

代码语言:javascript
复制
[1604923500000, 22179459072000]

而不是:

代码语言:javascript
复制
[1604923500, 22179459072.0]

因此,我必须将数据点(这里:22179459072000)除以1000,将其转换为其原始形式22179459072.0,以便在图形上绘制它。

然而,我不确定为什么会发生这种情况。

我已经在stackblitz中重现了这个问题。

EN

回答 1

Stack Overflow用户

发布于 2020-11-13 15:03:49

经过一番调试,我终于找到了问题的根源。

这是由于您克隆数据的方式造成的。

代码语言:javascript
复制
let clone_element = { ...element };

扩展运算符并不是创建元素的深层副本,而是浅层副本,这意味着clone_element的某些部分仍将引用引起突变的数据源。

要解决这个问题,您可以使用例如lodash的cloneDeep()。这个函数会产生一个真正的深度拷贝,所以你不可能改变你的初始数据。

代码语言:javascript
复制
const clone_element = cloneDeep(element);

现场演示:

其他参考资料:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64791500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档