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