View Single Post
Nutrox's Avatar Nutrox Nutrox is offline Super Moderator 17 Creative Assets 2006-11-25 #36 Old  
033 - Array Rotation
Last edited by Nutrox : 2006-11-25 at 06:52.
 
In a nutshell: Array rotation simply means shifting the array values to new positions while keeping their relative order.

Here is a quick example followed by the prototype version:

ActionScript Code:
  1. function rotateArray(arr:Array, amount:Number):Void
  2. {
  3.     var delta:Number = amount * -1;
  4.     if (amount < 0)
  5.     {
  6.         arr.splice(amount, null, arr.splice(0, delta));
  7.     }
  8.     else if (amount > 0)
  9.     {
  10.         arr.splice(0, null, arr.splice(delta, amount));
  11.     }
  12. }
  13.  
  14. //
  15.  
  16. var numbers:Array = [1,2,3,4,5];
  17.  
  18. rotateArray(numbers, -1);
  19. trace( numbers ); // 2,3,4,5,1
  20.  
  21. rotateArray(numbers, 1);
  22. trace( numbers ); // 1,2,3,4,5
  23.  
  24. rotateArray(numbers, 3);
  25. trace( numbers ); // 3,4,5,1,2
  26.  

ActionScript Code:
  1. Array.prototype.rotate = function(amount)
  2. {
  3.     var delta = amount * -1;
  4.     if (amount < 0)
  5.     {
  6.         this.splice(amount, null, this.splice(0, delta));
  7.     }
  8.     else if (amount > 0)
  9.     {
  10.         this.splice(0, null, this.splice(delta, amount));
  11.     }
  12. }
  13.  
  14. //
  15.  
  16. var numbers = [1,2,3,4,5];
  17.  
  18. numbers.rotate(-1);
  19. trace( numbers ); // 2,3,4,5,1
  20.  
  21. numbers.rotate(1);
  22. trace( numbers ); // 1,2,3,4,5
  23.  
  24. numbers.rotate(3);
  25. trace( numbers ); // 3,4,5,1,2
  26.