¿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.