Ver Mensaje Individual
  #4 (permalink)  
Antiguo 16/09/2009, 17:03
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, 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.