2010-02-17 3 views
0

Я хочу запустить цикл в массиве типа строки, так что если массив содержит 1000 слов, то цикл должен начинать 200 значений, чем break, и когда цикл запускается снова, чем он должен давать значения после предыдущих 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

Определить открытую переменный держать длину петли таяла

//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 box:

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(); 
Смежные вопросы