Aqui les traigo una funcion para eliminar valores duplicados en un arreglo en javascript , la manera en que funciona es por medio de los objetos , la descubri hace algun tiempo en otro blog por lo que no recuerdo el link para hacer honor a su autor .
La teoria es que los objetos se componen asi
{ key : "valor" }    la key siempre es unica y el valor se puede repetir , valiendose de este principio es que la funcion trabaja a la perfeccion devolviendo un arreglo sin valores duplicados  .
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;
}
un ejemplo seria: 
var a = [ 1 , 2 ,3 ,1 , 1 ];
 eliminateDuplicates(a);
devolvera :   a [ 1, 2, 3]
mas facil no puede ser , he visto otros codigos por ahi un tanto complejos pero este es el mas sencillo que he encontrado.