在JavaScript数组中进行循环

时间:2019-02-20 18:37:46

标签: javascript arrays loops for-loop

我正在尝试找到一种方法,该方法如何遍历数组,使用该array [index]暂停功能执行x秒钟,然后移至该数组中的下一个索引。

这是我到目前为止所取得的成就。它可以打印出整个数组,但是我需要它仅打印出一个值,对其进行处理,然后进行下一个操作,依此类推。

var destinations = ['Greece', 'Maldives', 'Croatia', 'Spain'];

var index = 0;

for (index = 0; index < destinations.length; index++){
  console.log(destinations[index]);
};

3 个答案:

答案 0 :(得分:2)

您可以将iteration protocolsSymbol.iterator中的Array#[@@iterator]()实现一起进行迭代,直到没有更多元素可用为止。

var destinations = ['Greece', 'Maldives', 'Croatia', 'Spain'],
    gen = destinations[Symbol.iterator]();
    interval = setInterval(function () {
        var g = gen.next();
        if (g.done) {
            clearInterval(interval);
            return;
        }
        console.log(g.value);
    }, 1000);

答案 1 :(得分:0)

您可以使用setTimeout来完成此操作。

var time_between_steps = 1000
var destinations = ['Greece', 'Maldives', 'Croatia', 'Spain']
var index = 0

function nextItem(){
  // do things here with destinations[index]
  console.log(destinations[index])
  
  index++
  
  // if we have not yet reached the end of the array, run nextItem again after time_between_steps
  if(index<=destinations.length-1)
    setTimeout(nextItem,time_between_steps)
}


nextItem()

答案 2 :(得分:0)

setTimeout可在此处使用:

基本上,您可以定义方法processItem并使用当前参数进行调用。延迟也可以通过变量设置。

延迟后,将使用参数调用该方法。

var delay = 1000; // 1 sec
var destinations = ['Greece', 'Maldives', 'Croatia', 'Spain'];
var index = 0;

function processItem(item){
  console.log("Item " + item);
  // do stuff
}

function iterate(index){
  processItem(destinations[index]);
  index++;
  if (index < destinations.length){
   setTimeout(iterate, delay, index);
  }
}

iterate(index);