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