2010-02-17 63 views
0

我想在一個字符串類型的數組上運行一個循環,這樣如果數組包含1000個詞而不是循環應該給出200以上的值而不是循環,並且當循環再次運行時,它應該給出前200個值之後的值, JavaScript的?在javascript中的數組上循環?

回答

0

希望這有助於

var counter = 0; // global variable 

for (i=counter;i<=1000; i++) 
{ 
    if (i !== 0) 
    { 
     if ((/^\d*$/.test(i/200))) 
     { 
      counter = i+1; 
      break; 
     } 
    } 
} 
0
for (i=0; i<200; i++) 
{ 
    do whatever 
} 

var b=i-1; 
for (i=b; i<400; i++) 
{ 
    do whatever; 
} 

0

定義公共變量持有thew環路長度

//the public variable outside the function scope  
var counter = 0; 

for (var x = counter ; x < counter + 200 ; x++) 
    { 
    //do you action 
    } 

//after finishing each loop increase it with 200 
counter = counter + 200 ; 
//don't forget to reset the counter if it reached to the maximum length of the array 
if (counter >= 1000) 
    counter = 0; 
1

你可能想看看slice有相當多本土支持你想要的功能,支持索引超出範圍處理e盒子:

var arr = [0,1,2,3,4,5,6,7,8,9]; 

var a = arr.slice(0, 3); // a = [1,2,3]; 
var b = arr.slice(6); // b = [6,7,8,9]; 
var c = arr.slice(5,7); // [5,6]; 
var d = arr.slice(100,200); // d = []; 
var e = arr.slice(0, 100); // e = [1,2,3,4,5,6,7,8,9]; 
0

這是一個迭代數組的一部分的函數。最後一個參數應該是一個將爲循環的每個元素調用的函數。

function iterateSome(array, offset, count, fn) 
{ 
    for(var i = offset, l = Math.min(offset + count, array.length); i < l; ++i) 
    { 
     fn(i, array[i], array); 
    } 
    return i; 
} 

下面是使用的例子:

var array = [1, 2, 3, 4, 5]; 
var offset = 0; 
var batch = 2; 

offset = iterateSome(array, offset, batch, function(i, element, array) 
{ 
    console.log(i + ": " + element); 
}); 
console.log("---"); 
offset = iterateSome(array, offset, batch, function(i, element, array) 
{ 
    console.log(i + ": " + element); 
}); 
console.log("---"); 
offset = iterateSome(array, offset, batch, function(i, element, array) 
{ 
    console.log(i + ": " + element); 
}); 

顯示:

0: 1 
1: 2 
--- 
2: 3 
3: 4 
--- 
4: 5 
0

可以有效地這樣做:

var SA = { 
    cOuter : 0, 

    iterate : function() { 
     var cInner = 1; 
     for (var y=SA.cOuter*200; y < 1000; y++, cInner ++) { 
      console.log(y); 
      if (cInner === 200) { 
       SA.cOuter++; 
       break; 
      } 
     } 

    } 
}; 

,然後調用它的多個時間如:

SA.iterate(); 
SA.iterate(); 
SA.iterate();