Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何有效地将这个大型Javascript关联数组转换为另一种形式?_Javascript_Arrays_Algorithm_Data Structures - Fatal编程技术网

如何有效地将这个大型Javascript关联数组转换为另一种形式?

如何有效地将这个大型Javascript关联数组转换为另一种形式?,javascript,arrays,algorithm,data-structures,Javascript,Arrays,Algorithm,Data Structures,我正在开发一个数据处理应用程序,在通过数据解析后,数据被组织成一个关联数组: sensorNumber, timeOfReading, Count, Value 2, 32242424, 2442, 42425.545545 ... 4, 4343435, 2442, 42425.545545 ... 它是一个非常简单的4列数据结构,但是在某些极端情况下,它可以获得相当大的数据行,最多可达100万行 现在,我想将所有这些数据点添加到一个允许缩放功能的图表中(这意味着没有跳过点) 图表需要在单独

我正在开发一个数据处理应用程序,在通过数据解析后,数据被组织成一个关联数组:

sensorNumber, timeOfReading, Count, Value
2, 32242424, 2442, 42425.545545
...
4, 4343435, 2442, 42425.545545
...
它是一个非常简单的4列数据结构,但是在某些极端情况下,它可以获得相当大的数据行,最多可达100万行

现在,我想将所有这些数据点添加到一个允许缩放功能的图表中(这意味着没有跳过点)

图表需要在单独的系列中分离每个“sensorNumber”列数据,此外,还需要在附加的子系列中进一步分离每个“计数”和“值”

最有效的图表数据插入方法使用如下数据结构:

time, Series1, Series2, Series3...
基本上,每个“X”值都需要添加所有“Y”值,这使得插入比一次绘制每个X和Y更快

这意味着我需要如下所示的数据结构:

time, Series1, Series2, Series3...
读取时间、计数(传感器1)、值(传感器1)。。。计数(传感器3)、值(传感器3).

解决方案#1:

1) 按“读取时间”属性对所有行进行排序
2) 创建新的数据结构,并为每个传感器属性的每个“计数”和“值”添加列,以填充该行

解决方案#2:

使用存储数组的字典。将每个唯一的“读取时间”属性设置为键,并为每个“计数”和“传感器”创建多列数组

解决方案#2似乎效率更高,因为它不需要任何排序


然而,我想知道是否有任何人都能想到的更优雅的解决方案?

考虑到数字不是我所能想到的,我不会把阅读时间当作地图上的一个键。这个数据可以在JS脚本收到之前进行排序吗?对我来说,解决方案2在一开始可能更好,但需要更多的代码并增加复杂性,因为解决方案1是直截了当的,更容易执行。这取决于你,但我认为“1”更可取。@Jacque迷人-我不敢相信我甚至从未听说过。数据可以按不同的方式排序,但这意味着改变程序的许多其他部分——如果没有有效的解决方案,很可能会归结到这一点。@JacqueGoupil:不确定“未精确存储”是什么意思。存储的每个数字都非常精确。当然,有些数字不能用计算机来表示,有些数字不能精确地表示为双精度。然而,由于时间戳通常存储为(32位)整数,因此在JS中没有问题(它的双精度数字格式可以精确存储高达52位的整数)。@Bergi我想他的意思是,如果我的秒是非常大的数字,我应该注意这一点。我的秒值远低于该阈值,因此可以。文章中写道:“9007199254740993(即2^53 1)是Javascript中最小的不可表示整数。换句话说,您可以在这个整数之前信任Javascript数字!”