Comunidad de diseño web y desarrollo en internet online

reordenar Array

Citar            
MensajeEscrito el 28 Nov 2009 12:21 pm
Hola tengo tengo un problemilla XD bueno el caso es que tengo que re ordenar un Array de pendiendo de los valores internos me explico

tengo un array que contiene números del 1 al 9 por ejemplo

var numeros:Array=new Array(1,2,3,4,5,6,7,8,9)

hasta a qui todo perfecto pero ahora necesito que el array se ordene dependiendo del valor que quiero que este al participio por ejemplo el 4

var numeros:Array=new Array(4,5,6,7,8,9,1,2,3)


a ver si alguno se le ocurre algo gracias XD

Por Lynxcraft

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Nov 2009 12:32 am
Puedes usar algo asi:

Código ActionScript :

var aOriginal:Array = [1,2,3,4,5,6,7,8,9];

aOriginal = ordenarArray(4);

function ordenarArray(nPrimerValor:Number)
  {
    var aGuardar:Array = new Array();
    var aOrdenado:Array = new Array();
    for (var i=0;i<aOriginal.length;i++)
      {
        if (aOriginal[i]!=nPrimerValor)
          {
            aGuardar[aGuardar.length] = aOriginal[i];
          }
        else
          {
            for (var j=i;j<aOriginal.length;j++)
              {
                aOrdenado[aOrdenado.length] = aOriginal[j];
              }
            for (var k=0;k<aGuardar.length;k++)
              {
                aOrdenado[aOrdenado.length] = aGuardar[k];
              }
            return aOrdenado;
          }
      }
  }
  
trace(aOriginal);


Lo que hace la funcion es buscar el primer valor a partir del cual va a ordenar el array, una vez encontrado toma el array a partir de ahi y le agrega al final los valores que fue guardando antes de encontrar el primer valor.

Saludos!

Por Rybgek

15 de clabLevel



 

opera
Citar            
MensajeEscrito el 29 Nov 2009 06:02 am
hmm el codigo de ryybek esta un poco mal.. weno giuaul para tu ejemplo sirve..
pero si el array esta desordenado por ejemplo var aOriginal:Array = [8,1,7,5,4,6,3,2,9];

no va a quedar bien hecho =(

te hice este codigito.. que funcioan un poco mejor.. aqui el array peude estar desordenado, y peude tener cualqueri cantidad de numeros.. ps suerte...

Código ActionScript :

num=new Array(5,1,4,7,2,6,9,3,8);
t=new Array();
function ordenar(desde){
tam=num.length;
for(a=0;a<(tam-1);a++){
   for(b=0;b<(tam-1);b++){
   if(num[b+1]<=num[b]){
   temp=num[b];
   num[b]=num[b+1];
   num[b+1]=temp;
      }
   if(num[b+1]==desde){fin=b+1;}}}
b=0;
for(a=0;a<tam;a++){
t[a]=num[a];
if((a+fin)>(tam-1)){
num[a]=t[b];
b++;
}else{
num[a]=num[a+fin];}}
trace(num);}
ordenar(3);

Por darkskullDA

56 de clabLevel



Genero:Masculino  

Desarrollador Web Profesional

firefox
Citar            
MensajeEscrito el 29 Nov 2009 10:54 am

darkskullDA escribió:

hmm el codigo de ryybek esta un poco mal.. weno giuaul para tu ejemplo sirve..
pero si el array esta desordenado por ejemplo var aOriginal:Array = [8,1,7,5,4,6,3,2,9];

...


Supongo que no has probado el codigo que hice porque funciona muy bien, de hecho haciendo una minima modificacion al valor que recibe la funcion nPrimerValor para que no sea solo numero

Código ActionScript :

function ordenarArray(nPrimerValor)
puede ordenar un array como

Código ActionScript :

aOriginal:Array = ["d","c",4,"q",8];
donde se mezclan numeros y letras, ya que la funcion en ningun momento evalua si un valor es mayor o menor porque que no interesa para este ejemplo.

Saludos!

Por Rybgek

15 de clabLevel



 

opera
Citar            
MensajeEscrito el 29 Nov 2009 08:44 pm
rybgek no es por meolestar.. pero desdde q vi el codigo nisiquera necesite probarlo.. xD

y ya probandolo..
probaste por jemplo con un array desordenado ?
var aOriginal:Array = [5,7,8,4,9,1,2,6,3];
pruebas tu o te dejo el resutlado? mejro rte lo dejo pro q parece q tu no checas tus codigos Xd
4,9,1,2,6,3,5,7,8

creo q no esta ordenado =(

igual no apsa nada ahi sta mi codigo.. xD
suerte...

Por darkskullDA

56 de clabLevel



Genero:Masculino  

Desarrollador Web Profesional

firefox
Citar            
MensajeEscrito el 29 Nov 2009 09:55 pm
Hola,
¿y no sería más fácil usar el método sort de la clase Array?

Código ActionScript :

var numeros:Array = new Array(5, 1, 4, 7, 2, 6, 9, 3, 8);
numeros.sort();
numeros = numeros.slice(3, 9).concat(numeros.slice(0, 3));

donde el 3 de los dos slice indica que lo quieres dividir respecto al cuarto elemento.

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 30 Nov 2009 10:45 am
jeje perdonar por no a ver respondido estaba de viaje este finde pero al fina he programado uno XDXDXD pero gracias por la ayuda todo esto también me sirve

Código ActionScript :

function reorenarArray(array:Array,valor:*) {
   var cont:int=0;
   var ind:int=0;
   var newArray:Array=new Array;
   var pass:Boolean=true;
   for (var j:int=0; j<array.length; j++) {
      if (array[j]==valor) {
         ind=j;
         break;
      }
   }
   for (var i:int=0; i<array.length; i++) {
      if (array[ind+i] == undefined) {
         pass=false;
      }
      if (pass) {
         newArray.push(array[ind+i]);
         cont++;
      } else {
         newArray.push(array[i-cont]);
      }
   }
   return newArray;
}

Por Lynxcraft

33 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.