开发者

Looping on an array in javascript?

i want to run a开发者_如何学Go loop on a string type array, such that if array contains 1000 words than loop should give starting 200 values than break and when loop runs again than it should give values after previous 200 values, how it is possible in javascript?


You probably want to check out slice that has pretty much native support for what you want, with support for index-out-of-bounds handling out of the 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];


Hope this helps

var counter = 0;  // global variable

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


Define public variable hold the length of thew loop

//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;


Here is a function that will iterate part of an array. The last argument should be a function that will be invoked for each element of the loop.

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;
}

Here is an example of use:

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);
});

Displays:

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


You can efficiently do something like :

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;
            }
        }

    }
};

and then invoke it multiple time like:

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


for (i=0; i<200; i++)
{
    do whatever
}

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

etc

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜