在时间戳日期范围内生成空数据 | Javascript
Generate empty data between the range of a timestamp date | Javascript
我得到了一些带有时间戳的统计数据。我想在图表上绘制它。
数据以固定步长(1 秒)递增,但其中一些缺失。
我想用自己生成的时间戳来填补这个空白。
// exmaple data form 18:00 to 18:47 (step 60000ms)
var data = [
[1425056400000, 1123], //18:00
[1425056460000, 1124], //18:01
[1425056520000, 1125], //18:02
[1425056580000, 1126], //18:03
[1425056640000, 1140], //18:04
[1425057840000, 2123], //18:24
[1425057900000, 2133], //18:25
[1425057960000, 2141], //18:26
[1425059160000, 5129], //18:46
[1425059220000, 5129] //18:47
];
// required result
var dataParsed = [
[1425056400000, 1123], //18:00
[1425056460000, 1124], //18:01
[1425056520000, 1125], //18:02
[1425056580000, 1126], //18:03
[1425056640000, 1140], //18:04
[1425056700000, 0], //18:05
[1425056760000, 0], //18:06
[1425056820000, 0], //18:07
//(...)
[1425057780000, 0], //18:23
[1425057840000, 2123], //18:24
[1425057900000, 2133], //18:25
[1425057960000, 2141], //18:26
//(...)
[1425058800000, 0], //18:40
//(...)
[1425059160000, 5129], //18:46
[1425059220000, 5129] //18:47
];
如何使用 JavaScript 执行此操作?
在遍历原始数组时,检查当前元素是否是序列中的下一个元素。如果没有,使用另一个循环生成缺失的元素:
var dataParsed = [];
var lastTime = data[0][0];
var timeStep = 60000;
for (var i = 0; i < data.length; i++) {
var curTime = data[i][0];
if (curTime > lastTime + timeStep) {
for (var time = lastTime + timeStep; time < curTime; time += timeStep) {
dataParse.push([time, 0]);
}
}
dataParse.push(data[i]);
lastTime = curTime;
}
您可以有一个循环,从第一个时间戳记到最后一个时间戳记,递增 60 秒。然后用当前值 + 缺失值填充一个新数组,如下所示。
var dataParsed = [];
for(var i=data[0][0], j=0; i<=data[data.length-1][0]; i+=60000) {
if(i == data[j][0]) {
dataParsed.push(data[j]);
j++;
} else {
dataParsed.push([i, 0]);
}
}
我得到了一些带有时间戳的统计数据。我想在图表上绘制它。 数据以固定步长(1 秒)递增,但其中一些缺失。 我想用自己生成的时间戳来填补这个空白。
// exmaple data form 18:00 to 18:47 (step 60000ms)
var data = [
[1425056400000, 1123], //18:00
[1425056460000, 1124], //18:01
[1425056520000, 1125], //18:02
[1425056580000, 1126], //18:03
[1425056640000, 1140], //18:04
[1425057840000, 2123], //18:24
[1425057900000, 2133], //18:25
[1425057960000, 2141], //18:26
[1425059160000, 5129], //18:46
[1425059220000, 5129] //18:47
];
// required result
var dataParsed = [
[1425056400000, 1123], //18:00
[1425056460000, 1124], //18:01
[1425056520000, 1125], //18:02
[1425056580000, 1126], //18:03
[1425056640000, 1140], //18:04
[1425056700000, 0], //18:05
[1425056760000, 0], //18:06
[1425056820000, 0], //18:07
//(...)
[1425057780000, 0], //18:23
[1425057840000, 2123], //18:24
[1425057900000, 2133], //18:25
[1425057960000, 2141], //18:26
//(...)
[1425058800000, 0], //18:40
//(...)
[1425059160000, 5129], //18:46
[1425059220000, 5129] //18:47
];
如何使用 JavaScript 执行此操作?
在遍历原始数组时,检查当前元素是否是序列中的下一个元素。如果没有,使用另一个循环生成缺失的元素:
var dataParsed = [];
var lastTime = data[0][0];
var timeStep = 60000;
for (var i = 0; i < data.length; i++) {
var curTime = data[i][0];
if (curTime > lastTime + timeStep) {
for (var time = lastTime + timeStep; time < curTime; time += timeStep) {
dataParse.push([time, 0]);
}
}
dataParse.push(data[i]);
lastTime = curTime;
}
您可以有一个循环,从第一个时间戳记到最后一个时间戳记,递增 60 秒。然后用当前值 + 缺失值填充一个新数组,如下所示。
var dataParsed = [];
for(var i=data[0][0], j=0; i<=data[data.length-1][0]; i+=60000) {
if(i == data[j][0]) {
dataParsed.push(data[j]);
j++;
} else {
dataParsed.push([i, 0]);
}
}