这是我的阵列。它的长度约为9000.这就是它的一小部分:
foreach_arr = ["21:07:01.535", "21:07:01.535", "21:07:26.113"]
有几次出现时间差异超过一分钟,那就是我想抓住那些时间。然后使用这些时间从另一个数组中获取某些索引。即"阵列" 我也使用moment.js进行时间分析。
预期结果:array = [8127, 9375, 13166, 14182]
实际结果:array = [8127, 13166]
似乎无法在这里找到问题,当我应该得到4时,我得到2个结果。 如果需要整个阵列进行故障排除,请尽可能添加它。
var xx = foreach_arr.length - 1;
for(var z = 0; z < xx; z++) {
var current_row = foreach_arr[z];
var next_row = foreach_arr[z + 1];
var msElapsedTime = moment(next_row,"HH:mm:ss.SSS").diff(moment(current_row, "HH:mm:ss.SSS")) / 1000;
if(msElapsedTime > 60) {
attempt_indices.push(foreach_arr[z]);
}
}
for(var x = 0; x < attempt_indices.length; x++) {
array.push(newdata.indexOf(attempt_indices[x]));
}
答案 0 :(得分:1)
由于OP不再需要我的代码了,我在这里发布它以删除downvote和其他任何东西:)
const foreach_arr = ["21:07:01.535", "21:07:01.535", "21:07:26.113", '22:01:01.000'];
let processedForeach_arr = [];
let gtOneMinuteDiff = [];
foreach_arr.forEach((elem1, index1) => {
// elem1.split(':') turns foreach_arr[0] into ['21', '07', '01.535']
const splitElementArray = elem1.split(':');
let timeInMs = 0;
// this changes ['21', '07', '01.535'] into [75600000, 420000, 1535]
splitElementArray.forEach((elem2, index2) => {
if (index2 === 0) { // elem2 is hours. 3.6M ms per hour.
timeInMs += parseFloat(elem2) * 60 * 60 * 1000;
} else if (index2 === 1) { // elem2 is minutes. 60K ms per minute.
timeInMs += parseFloat(elem2) * 60 * 1000;
} else if (index2 === 2) { // elem2 is seconds. 1K ms per second.
timeInMs += parseFloat(elem2) * 1000;
} else {
throw `Expected array element formatted like HH:MM:SS.ms. Error on
element ${elem1}.`;
}
});
processedForeach_arr.push(timeInMs);
let timeDiff = processedForeach_arr[index1 - 1] - processedForeach_arr[index1];
if (Math.abs(timeDiff) > 60000) {
gtOneMinuteDiff.push(timeDiff);
}
});
要获得foreach_arr [n]和foreach_arr [n + 1]之间的毫秒差异,此代码将
好的,我走到这一步,我的儿子需要我。我尽快完成代码,但你可能会打败我,希望上面的说明有所帮助。
答案 1 :(得分:0)
原来我的代码没有错。只是我对整个过程的看法。
array = [8127,13166]
是我最初得到的。有了这个,我在我的另一个数组上使用indexOf最终得到我的数组:
var another_test_arr = [];
for(var v = 0; v < array.length ; v++) {
var find = foreach_arr.indexOf(attempt_indices[v]);
another_test_arr.push(array[v], newdata.indexOf(foreach_arr[find + 1]));
}
结果:array = [8127,9375,13166,14182]