【发布时间】:2021-01-16 06:20:30
【问题描述】:
我有 3 个数组,它们都包含元组。第一个值是时间戳 (ts),第二个是当时发生的事件计数。单个数组根据时间戳排序。
var arr1 = [{ts: 1000, val: 1},{ts: 1001, val: 2},{ts: 1002, val: 3}];
var arr2 = [{ts: 1001, val: 4},{ts: 1002, val: 5},{ts: 1005, val: 6}];
var arr3 = [{ts: 1003, val: 8},{ts: 1007, val: 8},{ts: 1008, val: 8}];
我想将它们合并到一个 4xN 数组中的单个时间线中,这样它就变成了:
[
[1000, 1, 0, 0],
[1001, 2, 4, 0],
[1002, 3, 5, 0],
[1003, 0, 0, 8],
[1005, 0, 6, 0],
[1007, 0, 0, 8],
[1008, 0, 0, 8],
]
其中第一列是时间戳,第二列是第一个数组值,第三列是第二个数组值...
我试图以非功能性的方式进行,但无法提出一个不涉及重复查找数组中的时间戳以查找相应值的简洁明了的解决方案。我觉得应该有一种相对简单的方法可以在功能上做到这一点,因为我基本上是将基于行的数据转换为列数据。
如果解决 N 个数组有问题,我也可以使用 3 个数组的解决方案!
【问题讨论】:
-
您想用
ramda.js归档非功能性方式吗?我认为您非常确定要发挥作用。 -
如果它比纯 ES6 javascript 更容易,我已经在我的项目中使用 ramda.js,所以欢迎使用它的解决方案
-
每个时间戳在给定数组中是否只出现一次?
标签: javascript arrays functional-programming ramda.js