Eliminando duplicados de un array
by Alejandro M
JavaScript
var arrayOriginal = ['mike', 'james', 'james', 'alex', 'james', ];
var arraySinDuplicados = [];
var arraySinDuplicados = arrayOriginal.filter(function(elem, pos) {
document.write(pos + " - " + arrayOriginal.indexOf(elem) + "<br/>");
return arrayOriginal.indexOf(elem) == pos; //si elemento aparece en la misma posicion
//el segundo james el indice es 2 pero el index of devuelve 1
//en en el indice 4 el indexOf devuelde 1 tambien por que es la posicion del primero
});
//imprimiendo
for (i in arraySinDuplicados)
document.write(arraySinDuplicados[i] + "<br/>");
//js extendiendo array
Array.prototype.unique = function(a) {
return function() {
return this.filter(a)
}
}(function(a, b, c) {
return c.indexOf(a, b + 1) < 0
});
var myArr = [1, 2, 3, 'foo', 'bar', 'Hello World', 2, 3, 'bar', 1, 4, 5];
console.log(myArr.unique()); // ["foo", "Hello World", 2, 3, "bar", 1, 4, 5]
//con jquery
var arrayOriginal2 = ["Dani","Rodrigo", "Jordi","Aleix","Alex","Raúl","Rodrigo","Eloy"];
var arraySinDuplicados2 = [];
$.each(arrayOriginal2, function(i, el){
if($.inArray(el, arraySinDuplicados2) === -1) arraySinDuplicados2.push(el);
});
document.write("<br/>" + arraySinDuplicados2 + "<br/>")
/* opcion 3 */
function eliminateDuplicates(arr) {
var i,
len = arr.length,
out = [],
obj = {};
for (i = 0; i < len; i++) {
obj[arr[i]] = 0;
}
for (i in obj) {
out.push(i);
}
return out;
}
var a = [1, 2, 3, 1, 1];
var t = eliminateDuplicates(a);
document.write("<br/>" + t + "<br/>")