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/>")