Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Date_Time - Fatal编程技术网

Javascript 根据日期从数组中提取值?

Javascript 根据日期从数组中提取值?,javascript,arrays,date,time,Javascript,Arrays,Date,Time,我有一组数据点,[date,value],就像这样 data_points = [[1310279340, 1], [1310279340, 1]] 我需要创建一个基于“毫秒前”的数组,每秒钟有10个值,或者每倒退100毫秒有一个值 新数组的值将类似于,[ms ago,value],如下所示 ms_ago_points = [[0,3],[100,6],[200,7]] 因此,该数组中的最后一个值表示[200毫秒前,值为7] 我很难弄清楚如何根据第一个数组中的日期值获取“Xms ago的值”

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

data_points = [[1310279340, 1], [1310279340, 1]]
我需要创建一个基于“毫秒前”的数组,每秒钟有10个值,或者每倒退100毫秒有一个值

新数组的值将类似于,
[ms ago,value]
,如下所示

ms_ago_points = [[0,3],[100,6],[200,7]]
因此,该数组中的最后一个值表示[200毫秒前,值为7]

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

谢谢你的指导

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

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]);
}

*编辑:这当然假设您的
数据\u点
已经在100毫秒的步长内,否则您必须执行插值:)

我相信这符合您的要求:

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;
}
请仔细看

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

[{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

while循环,过滤日期数组,并尝试在100毫秒的间隔内分离出值,但它很快变得混乱,我没有运气让它工作也许在数组之外的结构中获取日期/值会有所帮助?这个数字
1310279340
是什么意思?约会怎么样?假设它们是日期,我认为你需要形成一条插值的“线”。您是在寻找数据点之间的斜率,还是只是在日期之间重复上一个已知值?由于这些日期可能不是精确的100毫秒间隔,如果(例如)在同一个100毫秒内有多个日期,你想做什么——将它们平均起来?这一点并不清楚。一个详细的例子会非常非常有用。@ErikE现在是unix时代。我希望在日期之间每隔100毫秒重复相同的值。如何将JavaScript中的当前时间转换为表示Unix时间的数字?
result = [];
result[0] = 1;
result[100] = 1;
result[200] = 5; // and so on