Rotacionador //Repositório JavaScript

Descrição

Rotaciona os elementos de um array com o mínimo de movimentos. É infinitamente mais rápido do que usar sequências de "array.unshift(array.pop())" ou "array.push(array.shift())".
Criado: 2006.01.02 - Modificado 2006.04.23

Código (Download)

//+ Jonas Raoni Soares Silva
//@ http://jsfromhell.com/array/rotate [rev. #2]

rotate = function(a, p){
    for(var l = a.length, p = (Math.abs(p) >= l && (p %= l), p < 0 && (p += l), p), i, x; p; p = (Math.ceil(l / p) - 1) * p - l + (l = p))
        for(i = l; i > p; x = a[--i], a[i] = a[i - p], a[i - p] = x);
    return a;
};

Exemplo (Exemplo)

<script type="text/javascript">
//<![CDATA[

document.write(
    "rotate([1,2,3], 2) = ".bold(), rotate([1,2,3], 2), "<br />",
    "rotate([1,2,3], -2) = ".bold(), rotate([1,2,3], -2), "<br />",
    "rotate([1,2,3], 1000) = ".bold(), rotate([1,2,3], 1000), "<br />"
)

//]]>
</script>

Ajuda

rotate(vetor: Array, rotateBy: Integer): Array
Rotaciona os elementos do array para a esquerda ou direita e, retorna o próprio array.
vetor
array a ser rotacionado
rotateBy
especifica em quantas posições o array deve ser rotacionado, valores negativos rotacionam para a esquerda e positivos para a direita

Ranque (Votos: 62)

2.56