elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [JS] Random sin repetir
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [JS] Random sin repetir  (Leído 17,750 veces)
Linton

Desconectado Desconectado

Mensajes: 239



Ver Perfil
[JS] Random sin repetir
« en: 30 Julio 2013, 22:36 pm »

Estaba buscando si había una función interna de javascript para seleccionar elementos de un array sin repetirlos, y me parece que no. Así que haré un programa con ese fin.

¿Alguna sugerencia? No pido código sino sólo una orientación general :)

Muchas gracias, un saludo.


En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: [JS] Random sin repetir
« Respuesta #1 en: 31 Julio 2013, 05:27 am »

A ver si entendí.

Por ejemplo tienes
[1][2][3][2][4][5]

y quieres que te seleccione?.
[1][2][3][4][5]



Saludos.


En línea

abc
Linton

Desconectado Desconectado

Mensajes: 239



Ver Perfil
Re: [JS] Random sin repetir
« Respuesta #2 en: 31 Julio 2013, 07:27 am »

Eso es  :)

No necesariamente con el mismo número de elementos, es decir, que con ['1', '2', '3', '4', '5', '6', '7', '8','9','10','11','12'] seleccione por ejemplo ['3','9', '2', '5', '7'].

La cantidad que sea, siempre sin repetir ninguno.

Un saludo.
En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: [JS] Random sin repetir
« Respuesta #3 en: 31 Julio 2013, 08:59 am »

Quieres seleccionar x numeros aleatorios pero sin repetir?.

si es así, puedes tener dos array el primero es donde tienes todos tus numeros el segundo es donde vas a ir guardando.

recorre el primero arreglo con un ciclo.
si el elemento del indice se encuentra en el array2 entonces no lo guarda
en caso contrario lo guarda
hasta que termine de recorrer array1

Saludos.
En línea

abc
Linton

Desconectado Desconectado

Mensajes: 239



Ver Perfil
Re: [JS] Random sin repetir
« Respuesta #4 en: 31 Julio 2013, 10:08 am »

Me pongo a ello, a ver si saco un script limpio y decente :) ¡Muchas gracias por tu ayuda!
En línea

Linton

Desconectado Desconectado

Mensajes: 239



Ver Perfil
Re: [JS] Random sin repetir
« Respuesta #5 en: 31 Julio 2013, 19:26 pm »

Pues no lo consigo...  :P Aquí va mi intento:
Código
  1. function selecLista(){
  2.  
  3. var zoo = ['Gato', 'Perro', 'Caballo', 'Ganso', 'Pez', 'Foca', 'Papagayo', 'Coyote', 'Milano', 'Nutria', 'Cotorra', 'Tigre'];
  4. var lote = [];
  5.  for(i=0; i<4; i++){
  6.  lote[i] = zoo[parseInt(Math.random()* 12)];
  7.  if(lote.indexOf(zoo[parseInt(Math.random()*14)])!=-1)
  8.    break;
  9. }
  10.  document.write(lote);
  11. }
  12. selecLista();

A veces en vez de cuatro se obtienen tres resultados, a veces dos, a veces uno... pero no consigo eliminar las repeticiones  :-(

¿Cómo podría arreglarse? Muchas gracias, un saludo.
En línea

#!drvy


Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: [JS] Random sin repetir
« Respuesta #6 en: 31 Julio 2013, 20:44 pm »

No entiendo porque generas dos random y esperas que coincidan ·_·

Código
  1. function selecLista(){
  2.   var zoo = ['Gato', 'Perro', 'Caballo', 'Ganso', 'Pez', 'Foca', 'Papagayo', 'Coyote', 'Milano', 'Nutria', 'Cotorra', 'Tigre'];
  3.   var lote = [];
  4.  
  5.   // Cantidad aleatoria de elementos basada en la cantidad de elemenos de la variable zoo.
  6.   var cantidad = Math.floor((Math.random()*zoo.length));
  7.  
  8.   for(var i=0; i<cantidad; i++){
  9.      // Generar un nuevo elemento.
  10.      var nuevo = zoo[Math.floor((Math.random()*zoo.length))];
  11.  
  12.      // Si el elemento no se encuentra en lote[] agregar (push), en caso
  13.      // de que sea se encuentre (continue;), saltar al siguente.
  14.      if(lote.indexOf(nuevo)!=-1){continue;} else {lote.push(nuevo);}
  15.   }
  16.   document.write(lote);
  17. };
  18. selecLista();

Saludos
« Última modificación: 31 Julio 2013, 20:50 pm por drvy | BSM » En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: [JS] Random sin repetir
« Respuesta #7 en: 31 Julio 2013, 20:57 pm »

Bueno ya tienes dos alternativas.

e.e la cantidad tambien era aleatoria? xD

Código
  1.  
  2.        var zoo = ['Gato', 'Perro', 'Caballo', 'Ganso', 'Pez', 'Foca', 'Papagayo', 'Coyote', 'Milano', 'Nutria', 'Cotorra', 'Tigre'];
  3. var cantidad = 4;
  4.  
  5. seleccionar(cantidad, zoo);
  6.  
  7. function seleccionar(cantidad, zoo) {
  8. this.cantidad = cantidad;
  9. this.zoo = zoo;
  10.  
  11. var tamano = zoo.length;
  12. var lote = new Array();
  13.  
  14. var indice = 0;
  15. do {
  16. var aleatorio = zoo[parseInt(Math.random()* tamano)];
  17. if(lote.indexOf(aleatorio)!=-1){
  18. continue;
  19. }else{
  20.            lote[indice]=aleatorio;
  21.            indice++;
  22.              }
  23. } while(lote.length < cantidad);
  24.  
  25. alert(lote);
  26. }
  27.  
  28.  

Saludos.
« Última modificación: 31 Julio 2013, 21:26 pm por Darhius » En línea

abc
Linton

Desconectado Desconectado

Mensajes: 239



Ver Perfil
Re: [JS] Random sin repetir
« Respuesta #8 en: 31 Julio 2013, 21:11 pm »

No entiendo porque generas dos random y esperas que coincidan ·_·

¡Qué torpe!  :-[ Creí que no estaba generando otro random, sino citando el anterior.

¡Muchas gracias por tu ayuda!  :-)
En línea

Linton

Desconectado Desconectado

Mensajes: 239



Ver Perfil
Re: [JS] Random sin repetir
« Respuesta #9 en: 31 Julio 2013, 21:23 pm »

e.e la cantidad tambien era aleatoria? xD

No, yo la había fijado en el for. Pero da igual, lo que me importa es que no se repitan :-)

Uf en tu solución hay varias cosas que desconozco... Bueno, a estudiarla también :-)

¡Gracias mil por tu ayuda!
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Repetir una línea de código
.NET (C#, VB.NET, ASP)
Krata 5 4,896 Último mensaje 27 Febrero 2008, 23:51 pm
por Sin Nick xD
repetir señal con router
Materiales y equipos
lukerico 5 3,233 Último mensaje 12 Enero 2009, 00:28 am
por zydas
repetir archivo bat en x tiempo
Scripting
jwnieves 4 19,542 Último mensaje 26 Enero 2010, 11:32 am
por jwnieves
repetir
Redes
javibrais 1 2,368 Último mensaje 8 Septiembre 2012, 12:18 pm
por HdM
Repetir StringTokenizer?
Java
Slider324 2 2,749 Último mensaje 11 Febrero 2013, 18:53 pm
por Slider324
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines