Ver Mensaje Individual
  #10 (permalink)  
Antiguo 08/12/2004, 09:10
Avatar de caricatos
caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
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
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo