Função Javascript para eliminar duplicidade em array

Função Javascript para eliminar duplicidade em array
Vamos a uma função em Javascript extremamente útil, para verificar e remover duplicidades em valores de um vetor, similar a função array_unique() do PHP

Surgiu uma necessidade em um projeto Javascript, onde eu tinha um array dinâmico, que não podia haver duplicidades. No PHP, podemos usar a função array_unique() para eliminar estas duplicidades..mas em Javascript? Não tem problema, criamos a nossa própria função!

function find_duplicates(arr) { 
	var len = arr.length, 
	out = [], 
	counts = {}; 
	for (var i=0;i<len;i++) { 
		var item = arr&#91;i&#93;; 
		var count = counts&#91;item&#93;; 
		counts&#91;item&#93; = counts&#91;item&#93; >= 1 ? counts[item] + 1 : 1; 
	} 
	for (var item in counts) { 
		if(counts[item] > 1) 
		out.push(item); 
	} 
	return out; 
}

e a chamada da função:

suaArray = find_duplicates(suaArray) != "" ? find_duplicates(suaArray) : suaArray;

Onde “suaArray” você substitui pelo nome do seu vetor que será removido as duplicidades.

Recebi por comentário uma segunda função, sugestão do colega Andrey Knupp do Fórum Imasters:

Array.prototype.duplicates = function (){
	return this.filter(function(x,y,k){
		return y !== k.lastIndexOf(x) ;
	}) ;
}
var $_ = ['a','b','c','d','a','b'].duplicates(); // ["a", "b", "c"]

Espero que tenha ajudado

Lucas Peperaio

Estudante de Ciência da Computação, trabalho com desenvolvimento web há 5 anos e com hardware há 8. Nas horas vagas, sou entusiasta de Overclock, Casemod e Benchmarks, além é claro dos Games. Apaixonado por informática e pela vida, procuro compartilhar meus conhecimentos e assim, ajudar as pessoas. Siga-me no youtube, posto semanalmente muito material sobre Hardware, tecnologia e games em geral: Clique aqui

Receba gratuitamente em seu E-mail
Novos artigos do meu Blog!


Após o Cadastro você receberá um Email Automático. Clique no link enviado para Ativar e receber as novidades.

Categorias do site





5 Comentários Deixe o seu

  1. Andrey Knupp

    Não está muito complicado esse code aí não !?!?! Eu faria assim https://gist.github.com/1606464

    ;)

    • Lucas Peperaio

      Interessante a sua função Andrey, muito bom. Publicarei no meu post também ok?

  2. Andrey Knupp Vital

    Opa .. beleza !

  3. Guilherme Berlintes

    Aew, to com um problema no meu Script, preciso verificar se no Array tem algum valor replicado, caso sim substitui-lo por outro valor. Como Faz ??

    • Lucas Peperaio

      Você vai ter que modificar a função, de forma a retornar para você o indíce do item duplicado ao invés do valor.