Hola otra vez:
Como algunos métodos no estaban bien implementados, los he estado corrigiendo:
Código:
Array.prototype.rotarD = function() {
var yo = this;
var primero = new Array();
primero[0] = yo.pop(); //igual a yo.desapilarUltimo()
primero = primero.concat(yo);
return primero;
}
Código:
Array.prototype.moverPrimeroA = function(b) {
var yo = new Array();
yo = this;
var longitudArray = yo.length;
if (b == yo.length - 1)
return yo.rotarI();
else {
if (b < (longitudArray) && b > 0) {
principio = new Array();
principio = yo.slice(0, parseInt(b) + 1);
principio.length = parseInt(b) + 1;
fin = new Array();
fin = this.slice(parseInt(b) + 1, longitudArray);
principio = principio.rotarI().concat(fin);
return principio;
}
else
return yo;
}
}
Código:
Array.prototype.moverAlFinal = function(b) {
var yo = this;
var longitudArray = yo.length;
if (b == 0)
return yo.rotarI();
else {
if (b < (yo.length - 1)) {
principio = yo.slice(0, b);
fin = yo.slice(b, longitudArray).rotarI();
yo = principio.concat(fin);
return principio.concat(fin);
}
else
return yo;
}
}
Estos 2 métodos sirven de ayuda a mover...
Código:
Array.prototype.mover = function(a, b) {
var rotar = "rotarI";
var yo = this;
var longitudArray = yo.length;
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 > b) {temp = a; a = b; b = temp; rotar = "rotarD";}
if (a > 0 && b < longitudArray) {
principio = yo.slice(0, parseInt(a));
mitad = yo.slice(parseInt(a), parseInt(b) + 1)[rotar]();
fin = yo.slice(parseInt(b) + 1, longitudArray);
return principio.concat(mitad, fin);
}
return yo;
}
En esta página se pueden probar:
http://www.pepemolina.com/arrays/index.html
Saludos