2013-07-05 22 views

Odpowiedz

12

Spróbuj tego:

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

Bez mutacji tablicę, byłoby

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(",")); 
+0

+ 1 fajne rozwiązanie (lepsze niż to, co miałem zamiar opublikować :)) – Ben

+0

@Bergi dzięki, działa – Anshul

3
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(',')); 
} 
4

prostu za pomocą operatora moduł można uzyskać dostęp do tablicy w okrągłym sposób.

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

wyjściowa:

B C


B C D


C D


D C

0

jak o tym jednym-liner zrobiłem?

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