Estuve haciendo nuevos métodos para los arrays:
Me gustaría que me dijeran si funcionan bien:
Rotar a la izquierda:
Código:
  
Rotar a la derecha:Array.prototype.rotarI = function()	{
	var yo = this;
	var primero = yo.shift();
	yo[yo.length] = primero;
	return yo;
}
Código:
  
Cambiar 2 elementos: (esto es también útil para ordenación... el siguiente)Array.prototype.rotarD = function()	{
	var yo = this;
	var primero = new Array(yo.pop());
	return primero.concat(yo);
}
Código:
  
Ordenar por un campo (array de objetos)Array.prototype.cambiar = function(a, b)	{
	var yo = this;
	var temp = yo[a];
	yo[a] = yo[b];
	yo[b] = temp;
	return yo;
}
Código:
  
Espero poder hacer la ordenación por el método quicksort más adelante.Array.prototype.ordenar = function(esto)	{
	var yo = this;
	for (var i = 0, mayor = yo.length - 1; i < mayor; i ++)
		for (var j = i + 1; j < yo.length; j ++)
			if (yo[i][esto] < yo[j][esto])
				yo.cambiar(i, j);
	return yo;
}
Mover primer elemento a un luger determinado (rotando el resto):
Código:
  
Mover un elemento al final del array:Array.prototype.moverPrimeroA = function(b)	{
	var yo = this;
	if (b == yo.length - 1)	
		return yo.rotar();
	else	{
		if (b < (yo.length - 1))	{
			principio = yo.slice(0, b + 1).rotarI();
			fin = yo.slice(b + 1, yo.length);
			return principio.concat(fin);
		}
		else
			return yo;
	}
}
Código:
  
Mover un elemento a otra parte (usa los 2 métodos anteriores):Array.prototype.moverAlFinal = function(b)	{
	var yo = this;
	if (b == 0)	
		return yo.rotar();
	else	{
		if (b < (yo.length - 1))	{
			principio = yo.slice(0, b);
			fin = yo.slice(b, yo.length).rotarI();
			return principio.concat(fin);
		}
		else
			return yo;
	}
}
Código:
  
Saludos  Array.prototype.mover = function(a, b)	{
	var yo = this;
	if (a < 0 || b < 0)
		return yo;
	if (a == 0)
		return yo.moverPrimeroA(b);
	if (b == (yo.length - 1))
		return yo.moverAlFinal(a);
	if (a > 0 && b < yo.length)	{
		principio = yo.slice(0, a);
		mitad = yo.slice(a, b + 1).rotarI();
		fin = yo.slice(b + 1, yo.length)
		return principio.concat(mitad, fin);
	}
}
 
  
 

 
  
  ....   me ha salido esto.
....   me ha salido esto.
