语境
我有一个对象数组(或字典列表),根据每个对象的属性按顺序排序,比如time
. 在 JSON 中,它看起来像这样:
[
{'details': 'some details', 'time': 69},
{'details': 'some details', 'time': 79},
{'details': 'some details', 'time': 107},
{'details': 'some details', 'time': 339},
{'details': 'some details', 'time': 339},
{'details': 'some details', 'time': 344},
...
]
每个条目代表我的程序在某个时间点的状态。这些条目是按顺序排列的,但在时间上间隔不均匀。沿着代表时间的数字线的漂亮视觉效果可能如下所示:
所以我们有一系列称为快照的对象() 沿着时间线,其时间值在时间上不均匀地放置它们。
目标
我想重新采样这些快照对象,以便生成一个新的快照对象数组,但在时间上均匀分布。快速的视觉效果如下所示:
在这里您可以看到重新采样的时间线,其中重新采样的快照对应于最新的可用快照在对应的时间或之前发生的. 根据定义,始终设置为与,因为它是不均匀和均匀快照的起点。
通过一些细节思考
有两种情况我们需要考虑 - (1) 当有超过 1 个时之间s 和 (2) 当没有新的之间s。下图演示了这两种情况:
我们看到, 一些s 已经过去了,所以我们跳过除了最近的相对, 和的样本返回(场景 1)。为了, 没有新的s 已经发生,所以基于我们掌握的信息的应用程序的状态仍然在, 和样品在也一样(场景 2)。或许这从上面的描述中已经很明显了。
写一个函数?
我一直在考虑这个问题,我一直在尝试使用一个函数来执行这个采样给定一组快照和采样间隔. 我想让它尽可能高效。我的想法是复制(以免改变原来的)称为,然后开始从前面弹出快照. 这样,对于每一个我们建立,我们继续从剩下的工作,从而减少我们必须通过原始快照进行的迭代次数并提高算法的效率。
我正在努力想出这样一个功能,鉴于这是一个多么简单的概念,我想知道它是否已经存在于某个地方?我需要在 TypeScript/Javascript 中实现这一点,但 python 或伪代码中的解决方案也会非常有帮助,甚至是“嘿,这是一个已经描述/解决的常见问题”的链接。