【问题标题】:Pulling values from an array based on date?根据日期从数组中提取值?
【发布时间】:2013-04-07 06:22:05
【问题描述】:

我有一个数据点数组,[date, value],就像这样......

data_points = [[1310279340, 1], [1310279340, 1]]

我需要创建一个基于“毫秒前”的数组,每秒有十个值,或者每 100 毫秒后退一个值。

新数组的值看起来像[ms ago, value],像这样......

ms_ago_points = [[0,3],[100,6],[200,7]]

所以该数组中的最后一个值表示 [200 毫秒前,值为 7]。

我很难弄清楚如何根据第一个数组中的日期值获取“Xms 前的值”。如果需要,如果轮询数据更容易,我可能能够以数组以外的格式获取初始日期/值。

感谢您的指导!!

编辑:我希望在它们之间每 100 毫秒滴答声在日期之间重复相同的值。

【问题讨论】:

  • while 循环,过滤日期数组并尝试在 100 毫秒的间隔内将值分开,但它很快就变得一团糟,我没有运气让它工作
  • 也许在数组之外的结构中获取日期/值可能会有所帮助?
  • 这个数字1310279340是什么意思?约会怎么样?假设它们以某种方式是日期,我认为您需要形成一个插值的“线”。您是在寻找数据点之间的斜率还是只是在日期之间重复最后一个已知值?由于日期可能不是精确的 100 毫秒间隔,如果(例如)在同一个 100 毫秒内有多个日期,你想做什么——将它们平均出来?这一点都不清楚。一个详细的例子将是最有帮助的。
  • @ErikE 现在是 unix 时间。我希望在它们之间每 100 毫秒滴答声在日期之间重复相同的值。
  • 如何将 JavaScript 中的当前时间转化为代表 Unix 时间的数字?

标签: javascript arrays date time


【解决方案1】:
var now = Date.now(),
    l = data_points.length,
    ms_ago_points = [];

for ( var c = 0; c < l; c++ ) {
  ms_ago_points.push([now - data_points[c][0],data_points[c][1]);
}

之后您可能需要对ms_ago_points 进行排序,但这应该会为您提供所需的数组。 但是:我强烈建议您不要使用多维数组,而是使用对象:

ms_ago_points= [{ms: 0, value: 3},{ms:100, value: 6}...]

*edit:这当然假设您的 data_points 已经在 100 毫秒的步骤中,否则您必须实现插值 :)

【讨论】:

    【解决方案2】:

    我相信这符合您的要求:

    function msFromDataPoints(nowTime, dataPoints) {
        var d = dataPoints.length,
            i = 0,
            anchor = Math.floor(nowTime.getTime() / 100) * 100,
            ms = anchor,
            msArr = [];
        while (d--) {
            while (ms >= data_points[d][0] * 1000) {
                msArr.push([anchor - ms, dataPoints[d][1]];
                ms -= 100;
            }
        }
        return msArr;
    }
    

    Js Fiddle 中查看。

    注意:我发现数据结构有点奇怪。输入对象似乎最好:

    [{date: 1310279340, value: 1}, {date: 1310279340, value: 1}]
    

    并且您的输出数组根本不需要毫秒,因为简单地 [1, 1, 5, 5, 3, 2 4](或其他)将被理解为意味着毫秒索引从 0 开始并增加 100。如果绝对需要,您可以使用稀疏数组:

    result = [];
    result[0] = 1;
    result[100] = 1;
    result[200] = 5; // and so on
    

    【讨论】:

      猜你喜欢
      • 2015-03-04
      • 2021-11-28
      • 1970-01-01
      • 2022-06-23
      • 1970-01-01
      • 1970-01-01
      • 2014-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多