Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-需要重复数组迭代以更改元素';每x秒上一节课_Javascript_Arrays - Fatal编程技术网

Javascript-需要重复数组迭代以更改元素';每x秒上一节课

Javascript-需要重复数组迭代以更改元素';每x秒上一节课,javascript,arrays,Javascript,Arrays,我目前需要使用javascript在数组中循环。下面是我能想到的一种方法,但1-它不起作用,2-想知道他们的方法是否是实现这一点的更优化或更紧凑的方法 var myArray=[1,2,3,4] for (var i=0; i<myArray.length; i++) { console.log(i + 'hi') if (i==3) { i=0; } } var myArray=[1,2,3,4] 对于(var i=0;i来说

我目前需要使用javascript在数组中循环。下面是我能想到的一种方法,但1-它不起作用,2-想知道他们的方法是否是实现这一点的更优化或更紧凑的方法

var myArray=[1,2,3,4]

for (var i=0; i<myArray.length; i++)
{
     console.log(i + 'hi')
     if (i==3)
     {
        i=0;
     }

}
var myArray=[1,2,3,4]

对于(var i=0;i来说,如果能更多地了解您到底需要什么,那就好了,但这是一种方法:

function loop(arr) {
    for (var i=0; i<arr.length; i++) {
        console.log('hi');
    }
    // OP wants a 10 second delay
    setTimeout(function () { loop(arr); }, 0);
}
功能循环(arr){

对于(var i=0;i,可以使用模运算符

var i = 0;
// loop forever
while(true) {
    console.log(myArray[i] + 'hi');
    // i % 4 is the remainder when dividing i by 4
    // so this will cause i to be 0, 1, 2, 3, 0, 1, ...
    i = (i + 1) % myArray.length;
}

请查看以下内容:

var myArray=[1,2,3,4]

for (var i=0; i<myArray.length; i++)
{
     console.log(myArray[i] + 'hi')

     if (i==3)
     {
        i=0;
     }

}

for(var i=0;i基于您希望每10秒做一件事的注释:

// IIFE to keep the variable i contained to a new scope
+function ( ) {

    var DURATION = 10;
    var i = 0;

    setInterval( function ( ) {

        // Do something every ten seconds 
        console.log( arr[i] );

        // Increment i (mod array.length)
        i = (i + 1) % array.length;

    }, DURATION*1000 );

}();
也许这样行得通

function foo() {
    var myArray = [1,2,3,4],
        i,
        len = myArray.length;
    for (i = 0; i < len; i += 1) {
       console.log(i + 'hi');
    }
}
while(true) {
    setTimeout(foo, 10000);
}
函数foo(){
var myArray=[1,2,3,4],
我
len=myArray.length;
对于(i=0;i
你所说的“在数组中保持循环”到底是什么意思?比如,永远?只要使用
while(true)
循环。“我正在尝试实现一个循环,它将在内部每10秒显示一次内容”那么,首先使用同步循环是错误的方法。为什么不解释一下你在问题中试图做什么?你应该在问题中提到“10秒”部分。基本上是重复的,在我开始输入我的评论之前,我看到了“避免在评论中回答问题”,但我似乎是唯一一个:)每0毫秒执行一次For循环?你能解释一下吗?@DannyFardyJhonstonBermúdez,首先它迭代循环,然后再次调用该函数,但使用setTimeout避免递归和庞大的运行时堆栈。这只是无限执行循环的另一种方式。但循环每0毫秒运行一次。它必须是:
setTimeout(function(){},(10000));
检查问题中的注释。@DannyFardyJhonstonBermúdez,问题没有提到10秒。但是,在注释中,我已经提到在我的答案中将0更改为10000。感谢您的解释。如果您的目标是挂起浏览器,这将“起作用”:问题是,由于setTimeout在循环中,它将无限地放入javascript的事件队列中。如果您将
setTimeout(foo,10000)
放入foo中,它将完成我认为您期望的操作。