Foros del Web » Programando para Internet » Javascript »

buscar repetidos

Estas en el tema de buscar repetidos en el foro de Javascript en Foros del Web. alguien sabe alguna rutina para buscar un elemento que se repita dentro de un arreglo.... porfaaaaa.....
  #1 (permalink)  
Antiguo 05/06/2003, 15:48
 
Fecha de Ingreso: junio-2003
Ubicación: Quilicura
Mensajes: 14
Antigüedad: 21 años, 7 meses
Puntos: 0
buscar repetidos

alguien sabe alguna rutina para buscar un elemento que se repita dentro de un arreglo....


porfaaaaa..
  #2 (permalink)  
Antiguo 05/06/2003, 16:56
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 23 años
Puntos: 38
Hola afiller.

Prueba esto:

Código PHP:
<html>
 <
head>
  <
script language="JavaScript">

   var 
aItems = new Array(128510148224568);

   function 
mostrarArreglo(){
    var 
s;
    
"";
    for (var 
0aItems.lengthi++)
     
+= "," String(aItems[i]);
    
alert(s.substr(1s.length 1));
   }

   function 
mostrarRepetidos(){
    var 
s;
    
"";
    
aItems.sort();
    for (var 
1aItems.lengthi++)
     if (
aItems[i] == aItems[1])
      if (
s.indexOf(String(aItems[i])) == -1)
       
+= "," String(aItems[i]);
    
alert(s.substr(1s.length 1));
   }

  
</script>
 </head>
 <body>
  <form name="frm">
   <input type="button" value="Mostrar valores" onclick="mostrarArreglo()">
   <input type="button" value="Mostrar repetidos" onclick="mostrarRepetidos()">
  </form>
 </body>
</html> 
Saludos.
  #3 (permalink)  
Antiguo 06/06/2003, 08:01
 
Fecha de Ingreso: junio-2003
Ubicación: Quilicura
Mensajes: 14
Antigüedad: 21 años, 7 meses
Puntos: 0
graciassss

gracias maestro funciona impequeee , lo que si te pregunto que hacen las instrucciones


if (s.indexOf(String(aItems[i])) == -1)
s += "," + String(aItems[i]);
es que es para poder entender la rutina, gracias
  #4 (permalink)  
Antiguo 06/06/2003, 09:17
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 23 años
Puntos: 38
Te cuento:

La variable "s" es un string donde llevo lo que te muestro en el alert en cada uno de los casos, lo que hace el if es preguntar si dentro de la cadena ya está grabado o no lo que re va a incluir.

Veamos

Código:
if (s.indexOf(String(aItems[i])) == -1)
s.indexOf(<x>) -> Retorna la posición en la que el string <x> aparece dentro del string s (o -1 si no aparece).

aItems[i] es uno de los elementos del arreglo (valor numérico).

String(<n>) -> Convierte a string.

El conjunto dice, pasa el elemento i del arreglo a string y búscalo dentro de la cadena "s", si no lo encuentras, pasa a la siguiente instrucción.

Código:
s += "," + String(aItems[i]);
A lo contenido dentro de la variable "s", añádele una "," y luego el contenido de la posición i del arreglo convertida a string.

Eso es lo que hace: Si el elemento no lo he puesto ya en el string, entonces lo pongo.

Saludos.

------------ NOTA POSTERIOR ------------

La función lo que hace es ordenar el arreglo e ir comparando cada elemento con el anterior. Si un elemento es igual al anterior, entonces está repetido y lo agrego a la lista. Pero si el elemento está tres veces en la lista, al revisar usando solo ese criterio aparecería dos veces en la lista de elementos repetidos.

Es por eso que solo lo agrego a la lista de repetidos si no estaba previamente.

Saludos.

Última edición por Kaopectate; 06/06/2003 a las 09:17
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 02:09.