var lista = [1,2,3,4,5,6,7,8,9]; lista = lista.sort(function() {return Math.random() - 0.5}); document.write(lista); // imprime por ejemplo: 7,9,1,5,2,3,6,4,8
Etiquetas JavaScript Tutoriales
También puedes ver...
Consejos para optimizar la utilidad de tu nuevo iPhone
Como sabes todo teléfono nuevo contiene las configuraciones de fábrica, estas configuraciones no siempre están …
11 Comentarios
-
Pingback: Bitacoras.com
-
Pingback: ¿Cómo puedo generar números aleatorios que no se repitan? - javascript - Preguntas/Respuestas
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.
sencillamente brillante la manera como soluciona este ejercicio que otros lo resolverian con un codigo mas grande
¡Muchísimas gracias!
Estuve todo el día buscando y por fin lo hice.
En verdad te debo una…
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 😀
te rifaste!
Gracias me sirvió y mucho