@ArtYarm

Как сделать чтобы каждый промежуток времени возвращало следующий элемент массива?

Есть массив
let colors = ["red", "pink", "coral", "orange", "yellow", "green"];

Нужно создать функцию, которая будет возвращать каждую секунду следующий элемент массива
  • Вопрос задан
  • 88 просмотров
Решения вопроса 4
0xD34F
@0xD34F Куратор тега JavaScript
function xxx(arr, callback, timeout) {
  let index = -1;
  return setInterval(() => {
    index = (index + 1) % arr.length;
    callback(arr[index]);
  }, timeout);
}


xxx(colors, console.log, 1000);
Ответ написан
coderisimo
@coderisimo Куратор тега JavaScript
let colors = ["red", "pink", "coral", "orange", "yellow", "green"];

let t = setInterval(function () {
  if (!colors.length) clearTimeout(t);
  colors.length && console.log(colors.shift());
}, 1000);


следует понимать, что в данном случае после выдачи всех значений массив будет пуст.
Ответ написан
Stalker_RED
@Stalker_RED
function getColor() {
  return colors[(+ new Date()) % colors.length];
}
Ответ написан
ArsenyMatytsyn
@ArsenyMatytsyn Куратор тега JavaScript
CEO iAmStudio, предприниматель.
Удаляй первый элемент и пуш его в конец массива. Показывай всегда 0-индексный элемент массива и повторяй это каждую секунду)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽
27 янв. 2021, в 13:44
800 руб./за проект
27 янв. 2021, в 13:27
1200 руб./за проект
27 янв. 2021, в 13:12
1000000 руб./за проект