Foros del Web » Programando para Internet » Javascript »

Como encontrar elementos iguales en un Array?

Estas en el tema de Como encontrar elementos iguales en un Array? en el foro de Javascript en Foros del Web. Que tal amigos, soy nuevo en la programacion en javascript y estoy tratando de resolver un programa que me dejaron en clase, es el siguiente: ...
  #1 (permalink)  
Antiguo 27/09/2009, 14:08
 
Fecha de Ingreso: septiembre-2009
Mensajes: 4
Antigüedad: 14 años, 7 meses
Puntos: 0
Como encontrar elementos iguales en un Array?

Que tal amigos, soy nuevo en la programacion en javascript y estoy tratando de resolver un programa que me dejaron en clase, es el siguiente:

Crear un programa que solicite calificaciones ilimitadas, las calificaciones validas solo seran las del 1 al 100. El programa debera parar cuando se ingrese -1. El programa debera de indicar cuantos numeros de cada numero fueron ingresados, si por ejemplo se ingresan dos 2, decir " dos 2 " y asi sucesivamente.

Pues bien, ya he creado la mayor parte del programa, el problema es que no se como encontrar elementos iguales dentro de mi array y decir cuantos elementos son iguales de un numero, si alguien me puede echar una mano, se lo agradecere, mi codigo es el siguiente:

script>

x=0;
bandera=true;
i=0;
mi_lista= new Array();

while(bandera==true)

{

x=parseInt(prompt("ingresa un dato"));


if(x<=100&&x!=-1)

{

mi_lista[i++]=x;
}

else
bandera=false;

}

/script>
  #2 (permalink)  
Antiguo 27/09/2009, 14:11
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Como encontrar elementos iguales en un Array?

simple, utiliza otro array cuyo indice es el valor de la calificación y su contenido sea el total de apariciones:

dentro del ciclo:
miotroarray[x]++;
  #3 (permalink)  
Antiguo 27/09/2009, 14:15
Avatar de chico_cubano  
Fecha de Ingreso: septiembre-2009
Mensajes: 9
Antigüedad: 14 años, 7 meses
Puntos: 2
Respuesta: Como encontrar elementos iguales en un Array?

podrías usar un algoritmo parecido al de ordenamiento burbuja, pero en este caso en la condicion preguntas si lo elementos son iguales, y si lo son en ese mismo momento detienes el ciclo....

aqui tienes un fragmento de codigo en C# que veo que se parece mucho de aqui puedes traducirlo a javascript

for (int i = 0; i<longitud(array)-1; i++)
for (int j =i+1; j<longitud(array); j++)
if (array[i] == array[j])
{
..... aqui se cumple que son iguales......
terminar ciclo......
}
  #4 (permalink)  
Antiguo 27/09/2009, 14:19
 
Fecha de Ingreso: septiembre-2009
Mensajes: 4
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Como encontrar elementos iguales en un Array?

gracias man, aunque el ciclo solo debe terminar cuando ingrese " -1 " y con los datos que se almacenaron en el array, buscar cuantos son iguales del 1, del 3, del 5 etc etc... voy a razonar las ideas de los dos y espero sacar algo bueno, muchas gracias a los dos =)
  #5 (permalink)  
Antiguo 27/09/2009, 14:35
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Como encontrar elementos iguales en un Array?

Hola

Revisa este tema. Quizás te ayude

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #6 (permalink)  
Antiguo 27/09/2009, 14:57
 
Fecha de Ingreso: septiembre-2009
Mensajes: 4
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Como encontrar elementos iguales en un Array?

Cita:
Iniciado por Adler Ver Mensaje
Hola

Revisa este tema. Quizás te ayude

Suerte
Gracias man! es algo parecido a lo que quiero hacer, pero viendo tu codigo y el resultado, tus elementos ya los tenias definidos en el Array, cierto? Yo tengo que ir ingresandolos con la funcion prompt... Uhhhm, sigo analizando tu codigo =)
  #7 (permalink)  
Antiguo 01/10/2009, 01:56
 
Fecha de Ingreso: septiembre-2009
Mensajes: 4
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Como encontrar elementos iguales en un Array?

Pues bien, he intentado hacerlo a mis ideas que han venido a mi mente y creo que he podido avanzar en esto, he podido lograr que me diga cuantas veces repetidas he ingresado el primer elemento de mi arreglo, pero no se me ocurre como hacer para que me diga sobre los demas elementos, alguna idea?

Mi script es el siguiente:


script>
x=0;
bandera=true;
i=0;
mi_lista= new Array();
contador=0;
y=0;
v=0;
w=0;
while(bandera==true)

{
x=parseInt(prompt("ingresa un dato"));

if(x<=100&&x!=-1)

{
contador=contador+1;
mi_lista[i++]=x;
}

else
bandera=false;
}

for(w=0;w<contador;w++)

{

w=mi_lista[w];

for(v=0;v<contador;v++)

{

if(w == mi_lista[v])

{
y=y+1;
}

}
}

document.write(y," veces ingresaste ",mi_lista[0],"</br>");

/script>



Adler, gracias por tu comentario man, me sirvio para llegar al script anterior que he mostrado xD!!

Saludos...
  #8 (permalink)  
Antiguo 01/10/2009, 05:29
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: Como encontrar elementos iguales en un Array?

Hola inuken,

No me ha quedado muy claro qué es lo que te falta pero he entendido algo como que necesitas comprobar qué posiciones del array están repetidos dentro de los 100 que quieres crear, es así?
Bueno, como tenía tiempo te he creado una función que hace eso; comprobar que valores están repetidos dentro de un array de 100 posiciones. Es este:

-------------------------------------------
//código js
var _array = new Array();
function llenarArray()
{
for(i=0;i<100;i++)
{
var x = Math.round(Math.random()*100,0);
if(x == 0)
x = 1;

_array[i] = x;
}

}
function comprobarRepetidos()
{
var posicion = 0;
var num = 1;
var div = document.getElementById('uno');
var almacen = new Array();
var mostrar = false;
var estaRepe = false;
var posicionAlmacen = 0;
for(a=0;a < _array.length;a++)
{

for(i=0;i < _array.length;i++)
{
if(i != posicion)
{
if( _array[i] == _array[posicion])
num += 1;
}

}
//acaba el for y comprobamos que ha habido repetidos con num
if(num > 1)
{
//comprobamos si el número repetido ya se ha mostrado en la página
for(z = 0;z < almacen.length;z++)
{
if(almacen[z] == _array[posicion])
{
mostrar = false;
estaRepe = true;
//no vamos a mostrar en la página la repetición y rompemos el bucle
break;
}
}
}
if(!estaRepe && num > 1)
{
almacen[posicionAlmacen] = _array[posicion];
mostrar = true;
posicionAlmacen += 1;
}

if(mostrar)
div.innerHTML += "el número " + _array[posicion] + " está " + num + " veces<br/>";

posicion += 1;
num = 1;
estaRepe = false;
mostrar = false;
}

for(aa = 0; aa < _array.length; aa++)
{
div.innerHTML += "_array[" + aa + "] = " + _array[aa]+ "<br/>";
}
}
--------------------------------------------
para que esto funcione, debes ejecutarlo en la carga de la página-->
<body onload="llenarArray();comprobarRepetidos();">
y un div para poder escribir en la página el resultado-->
<div id="uno"></div>

Esto lo que hace es mostrar todos los valores que se repiten dentro del array y, a continuación, todos los valores del array seguidos. Con 100 es bastante difícil (o tortuoso) de mirar. Puedes comprobar más facilmente si lo está haciendo bien si en la función llenarArray() le dices que solo rellene 10 posiciones y que solo genere números entre 1 y 5-->
for(i=0;i<10;i++)
{
var x = Math.round(Math.random()*5,0);
if(x == 0)
x = 1;

_array[i] = x;
}

ya te digo que no sé si es lo que estabas buscando, pero tal vez pueda ayudarte a solucionar tu problema.

salu2
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 08:02.