Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: masterkein en 12 Mayo 2018, 18:28 pm



Título: [Resuelto] Duda javascript: desordenar array con bucle
Publicado por: masterkein en 12 Mayo 2018, 18:28 pm
Estoy haciendo un ejercicio para un trabajo y tengo un problema a la hora de desordenar un array. Es decir, tengo un array llamado "numeros" y una función que lo desordena. Después creo un array vacío llamado "numerosDesordenados" el cual lo llenaré con tres posiciones, las cuales serán tres veces el array "numeros" desordenado de diferente manera. ¿Por qué cuando creo las posiciones del array "numerosDesordenados" con la función de desordenar el array "numeros" siempre me crea el mismo desorden? Os muestro código y el resultado:

Código
  1. function desordenar(array){
  2.  array = array.sort(function() {return Math.random() - 0.5});
  3.  return array;
  4. } // esta función me desordena un array
  5.  
  6. var numeros= ["1", "2", "3", "4", "5"]; //este es mi array
  7.  
  8. numerosDesordenados= []; // array vacio
  9.  
  10. for (i=0;i<3;i++){ //creo bucle para llenar array vacío
  11.  numerosDesordenados[i] = desordenar(numeros);
  12. }

Si hago un console.log(numeros) me muestra en consola ["1, "2", "3", "4", "5"]. Bien...Si hago un console.log(numerosDesordenados) me muestra un array con tres posiciones siempre con la misma mezcla, por ejemplo:

Código
  1. [0] = ["2","3","1","5","4"]
  2.  
  3. [1] = ["2","3","1","5","4"]
  4.  
  5. [3] = ["2","3","1","5","4"]


Yo quiero que las tres posiciones sean diferentes. Como lo puedo hacer?? Muchas gracias!!


Título: Re: Duda javascript: desordenar array con bucle
Publicado por: Eleкtro en 12 Mayo 2018, 22:13 pm
desordenar array con bucle
(...)
Como lo puedo hacer??

Seriamente, ¿cuantas veces crees que se ha podido formular esa misma pregunta en Internet, cien, mil, cien mil veces?, yo diria que más. Al menos podrías buscar en Google para descubrir cual es la forma óptima o aconsejable para desordenar un Array en javascript...

  • https://stackoverflow.com/a/6274381/1248295

Saludos!


Título: Re: Duda javascript: desordenar array con bucle
Publicado por: Serapis en 13 Mayo 2018, 02:10 am
Solo añadir que el bucle no precisa llegar a 0, cuando solo queda un elemento por ordenar resulta absurdo pedir que elija otro (si solo queda 1), al azar para que ocupe su puesto...

Recuerda que cada lenguaje tiene una forma de activar el generador aleatorio, mediante una semilla, si no, suelen repetirse las secuencias, lo  cual es más notorio, cuando se piden exactamente de cada vez las mismas cantidades de números aleatorios.
Generalmente elegir una semilla adecuada es algo complicado, pero salvo que haya un botón de 'destruir el mundo', basta con usar el timer (los segundos que han pasado desde la medianoche), incluso usar ese valor para elegir un primo de una lista. y con es eprimo 'moduar' ese valor del timer para usarlo como semilla...