Inicio / Desarrollo web / JavaScript avanzado: desordenar un array

Acerca de MasterGeek

José Antonio Ramírez # Ingeniero Técnico en Informática de Gestión # Fundador y administrador de nGeeks.com # Market Analyst en SocialRep

También puedes ver...

Iconos de acceso rápido mediante teclado

Los iconos de acceso rápido son los iconos que aparecen en la barra de tareas …

10 Comentarios

  1. Sencillamente ACOJONANTE… Hay otros recursos que te desordenan un array llamando incluso a otras funciones (funciones llamando a funciones); y tú lo solucionas con una única línea!! Brillante.
    PD. Funciona también cuando el Array es un Array de Objetos.

  2. sencillamente brillante la manera como soluciona este ejercicio que otros lo resolverian con un codigo mas grande

  3. Jaiber Sarmiento

    ¡Muchísimas gracias!
    Estuve todo el día buscando y por fin lo hice.
    En verdad te debo una…

  4. Por favor ¿podrías explicar por qué en el Math.random usas un 0.5?

    Sé que las operaciones para números aleatorios son entre 0 y 1 pero aquí diríamos que es la mitad, sin embargo he visto que la lista sale completa. Muy bien empleado todo, solo quisiera entender esa minoridad.

    Gracias por todo!

    • Hola!

      La función Math.random() devuelve un número pseudo-aleatorio entre 0 (incluido) y 1 (excluido), por lo que al restarle 0.5 estamos generando números positivos y negativos de forma aleatoria (entre -0.5 y 0.49999). De esta manera la función Sort reordena el array colocando un elemento delante o detrás de otro de forma aleatoria.

      Saludos.

      • Ooohh… Que brillante MasterGeek :3

        Ahora perdona pero tengo un problema mayor. He creado una lista bidimencional y este método no le cae bien.

        Sabes que naturalmente javascript no hace implementaciones de arrays bidimencionales sino que se aplican técnicas para esto: Te voy a adjuntar el código para que puedas dar una propuesta más exacta.

        ———————————————————————————————–
        var matriz=new Array(4);
        for (i = 0; i < 7; i++){
        matriz[i]=new Array(7);
        }

        for (i=0; i<7; i++) {
        for (e=0; e<=i; e++) {
        matriz[i][e] = "["+i + "," + e+"]";
        }
        }
        //matriz.sort(function() {return Math.random()-0.5});
        for (i=0; i<7; i++) {
        for (e=0; e<=i; e++) {
        document.write("”);
        document.write(matriz[i][e]);
        }
        }
        ——————————————————————————————–

        He tratado de pasar los valores a un array unidimencional y no puedo. Actualmente sigo tratando xD

      • PD: Sé que se debe al rango en que la aletoriedad se aplica pues los valores que no estén en este rango salen como no definidos.

        La parte de agregar los valores a un array unidimencional es para luego aplicar tu método. Gracias 😀

  5. te rifaste!

  6. Gracias me sirvió y mucho

  1. Pingback: Bitacoras.com

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *