Как вывести в консоль каждый елемент массива с помощью setTimeout?
Всем доброй ночи! Нужно создать функцию showWithDelay(массив). Метод принимает массив и на консоль по очереди выводит каждый элемент массива с интервалом в одну секунду.
Как можно увидеть я создаю функцию и с помощью forEach и для каждого елемента ставлю задержку в 1сек. Консоль никакой ошибки не выдает. Как исправить?
var time =function showWithDelay (delay) {
this.delay = [1, 2, 3, 4];
delay.forEach(element => {
for (let key in element) {
setTimeout (showWithDelay, 1000);
}
});
};
console.log(time);
Второй вариант написания тоже не дал позитивного результата
var time =function showWithDelay (delay) {
this.delay = [1, 2, 3, 4];
for (let i = 0; i < delay.length; i++) {
setTimeout (showWithDelay, 1000);
console.log(delay[i]);
}
}
Ответы (4 шт):
Автор решения: Алексей Шиманский
→ Ссылка
function showWithDelay(arr) {
for (let i = 0; i < arr.length; i++) {
setTimeout(() => {
console.log(arr[i]);
}, 1000 * (i + 1));
}
}
showWithDelay([1, 2, 3, 4]);
Автор решения: Igor
→ Ссылка
function showWithDelay(arr) {
arr = Array.from(arr);
let i = 0;
const timer = setInterval(() => {
console.log(arr[i++]);
if (i == arr.length)
clearInterval(timer);
}, 1000);
}
showWithDelay([1, 2, 3, 4]);
Автор решения: NoSkill
→ Ссылка
Простейший вариант delayedLog(a, i) где a - массив, i - позиция с которой нужно выводить данные (по умолчанию 0).
function delayedLog(a, i = 0) {
if (i < a.length) {
console.log(a[i]);
window.setTimeout(delayedLog, 1000, a, i+1);
}
}
delayedLog([1, 2, 3, 4]);
Автор решения: Rudi
→ Ссылка
function g(mas, n) {
let i = n || 0;
setTimeout(()=>{
if(i != mas.length) {
console.log(mas[i]);
g(mas, ++i);
}
},1000)
}
g([0,1,2,3,4])