Ver Mensaje Individual
  #10 (permalink)  
Antiguo 18/09/2009, 16:11
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Contar número de elementos repetidos en array

¿que tal? me alegro que al final hayas solucionado tu codigo como lo querias. por otro lado, tu codigo hace algo "chistoso", no te lo tomes a mal por la palabra. presiona varias veces el enlace y veras lo que sucede . para solucionarlo, simplemente mueve dentro de la funcion las siguientes dos lineas.
Código:
var arr_limpio = [];
var val_eliminados = [];
con el unico proposito de animarte a sacar nuevas ideas, o reestructurar tu codigo, o cualquier otra cosa util que le puedas sacar. a continuacion mas o menos el mismo resultado con la base que te estaba ofreciendo. claro, un poquito de modificacion para adaptarlo.
Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="http-equiv" content="Content-type: text/html; charset=iso-8859-1"/>
<script type="text/javascript">
// Array counting value;
Array.prototype.count_value = function(){
var count = {};
for(var i = 0; i < this.length; i++){
if(!(this[i] in count))count[this[i]] = 0;
count[this[i]]++;
}
return count;
}

// clean Array of repeated values;
Array.prototype.unique = function(){
var array = [];
for(var i = 0; i < this.length; i++){
	for(var j = i + 1; j < this.length; j++){
		if(this[i] == this[j]){
		array = array.concat(this.splice(j, 1));
		j--;
		}
	}
}
return array;
}

// serialize object with custom or predefined format;
Object.prototype.serialize = function(prefix, infix, sufix){
var serialize = "", prefix = prefix || ", ", infix = infix || ":", sufix = sufix || "";
    for(var prop in this){
    if(this.hasOwnProperty(prop)) serialize = serialize.concat(prefix, prop, infix, this[prop], sufix);
    }
return serialize.replace(/^, /, "");
}
</script>
</head>
<body>
<pre>
<script type="text/javascript">
array = "108876441088043".split("");
clean = [].concat(array); // crear copia;
count = clean.count_value();
repeat = clean.unique();
document.write("orignal: ", array.toString(), 
"\nlimpio: ", clean.toString(), 
"\nrepetidos: ", repeat.toString(),
count.serialize("\nElemento ", " se repite ", " veces."));
</script>
</pre>

</body>
</html>
a diferencia de tu codigo, la unica razon por la que he creado los componentes separados es para extenderlo a otras areas y tener controles mas especificos.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 18/09/2009 a las 16:18