Ver Mensaje Individual
  #8 (permalink)  
Antiguo 01/10/2009, 05:29
Avatar de ceSharp
ceSharp
 
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 16 años, 3 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