Javascript:如何每秒循环遍历每个数组的项目

时间:2017-09-21 22:41:54

标签: javascript arrays loops

假设我有一个这样的数组:

var arr = [0,1,2,3,4];

所以我想制作一个for循环,循环遍历数组和控制台记录每个项目,但我希望它分别控制日志每个项目,每个项目将在上一个项目后的第二个控制台记录,我该怎么办此?

3 个答案:

答案 0 :(得分:4)

您可以使用间隔。 这是一个例子:



var arr = [0,1,2,3,4];
var index = 0;
setInterval(function(){
    console.log(arr[index++ % arr.length]);
}, 1000)




上面的例子将循环遍历数组一次。如果只想循环数组一次,则可以在记录所有元素时停止间隔。



var arr = [0,1,2,3,4];
var index = 0;
var interval = setInterval(function(){
     console.log(arr[index++]);
     if(index == arr.length){
        clearInterval(interval);
     }
}, 1000)




答案 1 :(得分:1)

以为我会用干净的@mhodges answer清理ES6 generator function一点{/ 3}}:

let myArray = [0, 1, 2, 3, 4]

let interval = setInterval(gen => {
  const { value, done } = gen.next()
  
  if (done) {
    clearInterval(interval)
  } else {
    console.log(value)
  }
}, 1000, myArray[Symbol.iterator]())

答案 2 :(得分:0)

仅仅是为了它,这是一个使用ES6 generator function迭代数组内容的例子。您将继续在setInterval()内调用generator.next(),直到完成对整个数组的迭代,在这种情况下,您清除间隔并完成。

var myArr = [0,1,2,3,4];

function* iterateOverArray (arr) {
  var i = 0;
  while (i < arr.length) {
    yield arr[i++];
  }
}

var generator = iterateOverArray(myArr);

var interval = setInterval(function () {
  var nxt = generator.next();
  if (!nxt || nxt.done) {
    clearTimeout(interval);   
  }
  else {
    console.log(nxt.value);
  }
}, 1000);