2013-07-05 26 views
9

Tôi có một mảng như [A,B,C,D]. Tôi muốn truy cập vào mảng đó trong vòng lặp for như làCách truy cập mảng theo cách vòng tròn trong javascript

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 
} 

Tôi muốn truy cập sau đó như vậy trong javascript, bất kỳ ý tưởng nào?

Trả lời

12

Hãy thử điều này:

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

Nếu không có đột biến mảng, nó sẽ là

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 giải pháp tốt đẹp (tốt hơn những gì tôi sắp đăng :)) – Ben

+0

@Bergi cảm ơn, công việc của nó – 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

Đơn giản chỉ cần sử dụng nhà điều hành mô đun bạn có thể truy cập vào mảng theo cách tròn.

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

Output:

Một B C


B C D


C D Một


D Một C

0

thế nào về vấn đề này một liner tôi thực hiện?

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