Cómo acceder a la matriz de forma circular en javascript

Tengo una matriz como [A,B,C,D] . Quiero acceder a esa matriz dentro de un bucle for como

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

Quiero acceder así en javascript, ¿alguna idea?

Prueba esto:

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

Sin mutar la matriz, sería

 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(",")); 
 for (var i = 0; i < arr.length; i++) { var subarr = []; for (var j = 0; j < 3; j++) { subarr.push(arr[(i+j) % arr.length]); } console.log(i + " - " + subarr.join(',')); } 

Simplemente usando el operador de module puede acceder al set de forma circular.

 for(var i=0,len=arr.length;i<len;i++){ for(varj=0;j<3;j++){ console.log(a[i+j]%len) } console.log('****') } 

Salida:

A B C


B C D


C D A


D A C

¿Qué tal este one-liner que hice?

 var nextItem = (list.indexOf(currentItem) < list.length - 1) ? list[list.indexOf(currentItem) + 1] : list[0];