javascriptarraysloopscircular-buffer

How to access array in circular manner in JavaScript


I have an array like [A,B,C,D]. I want to access that array within a for loop like as

var arr = [A,B,C,D];

var len = arr.length;
for(var i = 0; i<len; i++){
    0 - A,B,C
    1 - B,C,D
    2 - C,D,A
    3 - D,A,B
}

I want to access that like in JavaScript, any ideas?


Solution

  • Try this:

    var arr = ["A","B","C","D"];
    for (var i=0, len=arr.length; i<len; i++) {
        alert(arr.slice(0, 3).join(","));
        arr.push(arr.shift());
    }
    

    Without mutating the array, it would be

    for (var i=0, len=arr.length; i<len; i++) {
        var str = arr[i];
        for (var j=1; j<3; j++)
            str += ","+arr[(i+j)%len]; // you could push to an array as well
        alert(str);
    }
    // or
    for (var i=0, len=arr.length; i<len; i++)
        alert(arr.slice(i, i+3).concat(arr.slice(0, Math.max(i+3-len, 0)).join(","));