JSFiddle - React, Tailwind, and code Playground
by T1MOXA
JavaScript
var data = [
{map: 'Олимп', duration: 90},
{map: 'Край Света',duration: 90},
{map: 'Олимп',duration: 60},
{map: 'Край Света',duration: 60},
{map: 'Олимп',duration: 60},
{map: 'Край Света',duration: 60},
{map: 'Олимп',duration: 120},
{map: 'Край Света',duration: 120},
{map: 'Олимп',duration: 90},
{map: 'Край Света',duration: 90},
{map: 'Олимп',duration: 120},
{map: 'Край Света',duration: 120},
{map: 'Олимп',duration: 90},
{map: 'Край Света',duration: 90},
{map: 'Олимп',duration: 120},
{map: 'Край Света',duration: 120},
{map: 'Олимп',duration: 60},
{map: 'Край Света',duration: 60},
{map: 'Олимп',duration: 90},
{map: 'Край Света',duration: 90},
{map: 'Олимп',duration: 90},
{map: 'Край Света',duration: 90},
{map: 'Олимп',duration: 120},
{map: 'Край Света',duration: 120}
];
const totalTime = data.reduce((accumulator, item) => accumulator + item.duration, 0);
const diff = ~~((Date.now() - 1608645600000) / 1000 / 60);
const minutesFromRotationStart = diff % totalTime;
console.log({totalTime});
let minutes = 0;
let i = 0;
for (const item of data) {
if (minutes < minutesFromRotationStart) {
minutes += item.duration;
i++;
} else {
console.log(`Текущая карта: ${data[i-1].map} (${minutes - minutesFromRotationStart} / ${data[i-1].duration} min.)`);
console.log(`Следующая карта: ${data[i].map} (${data[i].duration} min.)`)
break;
}
console.log(item);
}