Foros del Web » Programando para Internet » Javascript »

validación de array

Estas en el tema de validación de array en el foro de Javascript en Foros del Web. hola que tal: tengo este array al cual se le asignan valores aleatorios por medio de una funcion aleat(). Mi problema es que a veces ...
  #1 (permalink)  
Antiguo 12/07/2011, 20:16
 
Fecha de Ingreso: mayo-2011
Mensajes: 42
Antigüedad: 12 años, 11 meses
Puntos: 0
validación de array

hola que tal: tengo este array al cual se le asignan valores aleatorios por medio de una funcion aleat(). Mi problema es que a veces los valores se repiten y no quisiera eso.

Cómo podría validar las coincidencias ?


Código Javascript:
Ver original
  1. function aleat(){
  2.         var i;
  3.         i = parseInt(Math.random()*100);
  4.         return(i);
  5.     }
  6.  
  7. for(x = 0 ; x < premios.length ; x++){
  8.         premios[x] = aleat()
  9. }
  #2 (permalink)  
Antiguo 12/07/2011, 22:44
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: validación de array

No entendí bien qué necesitás, pero si el objetivo es reordenar de manera aleatoria, quizá te sirva esto:
Código PHP:
<script type="text/javascript">
var 
premios = [1,2,3,4,5,6,7,8,9,10];
premios premios.sort(function(){return Math.random() - 0.5;});
alert(premios);
</script> 
  #3 (permalink)  
Antiguo 12/07/2011, 23:25
 
Fecha de Ingreso: mayo-2011
Mensajes: 42
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: validación de array

Panino, no no, reordenar no, lo que necesito es validar que ninguno de los valores de cada una de las posiciones del array se repita que sean todos valores diferentes. gracias !
  #4 (permalink)  
Antiguo 13/07/2011, 01:10
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 5 meses
Puntos: 66
Respuesta: validación de array

hola facuferrari,
una vez tuve un problema similar para simular una especie de Bingo. Lo que debes hacer es crear dos arrays, uno vacío (premios) y uno que haga de bolsa, del que se extraen números y luego se borran, de tal manera que en la generación aleatoria nunca se van a repetir porque no se contemplarán los números extraidos:
------------------------------------------------------
var bolsa = new Array();
var premios = new Array();
var totNum = 100
//llenamos la bolsa con el total de números aleatorios, por ejemplo 100
for(z=0;z<totNum+1;z++)
bolsa[z]=z;

function generarPremios()
{
//ahora vamos llenando el array premios con las posiciones del array bolsa de forma aleatoria
for(i=0;i<totNum+1;i++)
{
premios[i]=bolsa[parseInt(Math.random()*((totNum-i)+1))];
//y borramos esa posición de la bolsa
borrarBolsa(premios[i]);
}
}
function borrarBolsa(posicion)
{
//quitamos el valor del array
for(b=0;b<bolsa.length;b++)
{
if(bolsa[b]==posicion)
{
bolsa[b]='';
break;
}
}
//ordenamos el array de menor a mayor para que el vacío quede en la primera posición y la eliminamos
bolsa.sort();bolsa.shift();
}
--------------------------
en la variable totNum pones el número total de 'bolas' que se asignarán al array premios[]. espero que te sirva.
(que lo mismo me he liado y hay una forma más sencilla de hacerlo... no sé)

saludos.
  #5 (permalink)  
Antiguo 13/07/2011, 01:38
 
Fecha de Ingreso: mayo-2011
Mensajes: 42
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: validación de array

Eso mismo buscaba ! ceSharp ! incluso, tambien tengo que hacer un bingo gracias por la solucion seguire buscando a ver si encuentro alguna forma mas sencilla !
  #6 (permalink)  
Antiguo 13/07/2011, 02:16
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: validación de array

Hola:

La solución de Panino5001 deberías usarla, y luego tan solo desapilas del array....


for(z=0;z<totNum+1;z++)
bolsa.push(z);
bolsa = bolsa.sort(function(){return Math.random() - 0.5;});

... y luego las asignaciones...

premios[i] = bolsa.pop();

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo

Etiquetas: validar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:52.