16/09/2009, 17:03
|
| Javascripter | | Fecha de Ingreso: abril-2009 Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 8 meses Puntos: 1485 | |
Respuesta: Contar número de elementos repetidos en array lei ambos codigos tuyo, y te da NaN por esta linea no_repetidos[arr_origen[i]]++;. estas sumando undefined + 1 el cual equivale a NaN. ahora bien, no comprendo si lo que quieres es contar la cantidad de elementos repetidos como lo dice el titulo o si quieres eliminar los elementos repetidos como dice la funcion. - contar elementos repetidos:
Código:
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;
}
con count_value devuelve un objeto donde las propiedades son los elementos del array y el valor son las veces que se repite.
Código:
// un ejemplo;
array = "abcdabcd".split('');
obj = array.count_value();
// obj es {a:2, b:2, c:2, d:2};
si mas bien te interesa representarlo en un string, se me ocurre implementarle un metodo:
Código:
Object.prototype.serialize = function(){
var serialize = "";
for(var prop in this){
if(this.hasOwnProperty(prop)) serialize += prop + ":" + this[prop] + ", ";
}
return serialize.replace(/, $/, "");
}
de modo que obj.serialize() devuelve el objeto en forma de string. claro, el formato lo puedes hacer a tu gusto o necesidad.
- eliminar valores repetido:
Código:
Array.prototype.unique = function(){
for(var i = 0; i < this.length; i++){
for(var j = i + 1; j < this.length; j++){
if(this[i] == this[j]){
this.splice(j, 1);
j--;
}
}
}
}
// ejemplo;
var array = [1, 'y', 1, 2, 3, true, 'y'].unique();
// array resulta como un array [1, 'y', 2, 3, true];
__________________ la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad. |