Javascript-需要重复数组迭代以更改元素';每x秒上一节课
我目前需要使用javascript在数组中循环。下面是我能想到的一种方法,但1-它不起作用,2-想知道他们的方法是否是实现这一点的更优化或更紧凑的方法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来说
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中,它将完成我认为您期望的操作。