JQuery: Remover elementos duplicados?

Digamos que eu tenha uma lista de links com valores duplicados, conforme abaixo:

Book Magazine Book Book DVD DVD DVD Book 

Como eu, usando o JQuery, removia os dups e ficava com o seguinte, por exemplo:

 Book Magazine DVD 

Basicamente eu estou procurando uma maneira de remover quaisquer valores duplicados encontrados e mostrar 1 de cada link.

 var seen = {}; $('a').each(function() { var txt = $(this).text(); if (seen[txt]) $(this).remove(); else seen[txt] = true; }); 

Explicação:

seen é um object que mapeia qualquer texto visto anteriormente para true . Funciona como um conjunto contendo todos os textos vistos anteriormente. A linha if (seen[txt]) verifica se o texto está no conjunto. Nesse caso, vimos este texto antes, por isso, removemos o link. Caso contrário, este é um texto de link que vemos pela primeira vez. Nós o adicionamos ao conjunto para que quaisquer links adicionais com o mesmo texto sejam removidos.

Uma maneira alternativa de representar um conjunto é usar uma matriz contendo todos os valores. No entanto, isso tornaria muito mais lento, já que para ver se um valor está na matriz, precisaríamos varrer toda a matriz a cada vez. Procurar uma chave em um object usando seen[txt] é muito rápido em comparação.

Use o método jQuery $ .unique ()

Detalhe veja em http://api.jquery.com/jQuery.unique/

 // use an object as map var map = {}; $("a").each(function(){ var value = $(this).text(); if (map[value] == null){ map[value] = true; } else { $(this).remove(); } }); 
 $(document).ready(function(){ $("select").each(function () { var selectedItem = $(this).find('option').filter(':selected').text(); var selectedItemValue = $(this).find('option').filter(':selected').val(); $(this).children("option").each(function(x){ if(this.text == selectedItem && $(this).val() != selectedItemValue) { $(this).remove(); } }); }); }); 

@interjay @Georg Fritzsche

Sua correção não funcionou no meu caso, então eu construo uma versão diferente:

 var seen=''; $('a').each(function(){ var see=$(this).text(); if(seen.match(see)){ $(this).remove();} else{ seen=seen+$(this).text(); } }); 

Espera que isso forneça a outra pessoa uma correção alternativa válida apenas por precaução.

Uma maneira rápida e fácil seria

 $("a").​​​​​​​​each(function(){ if($(this).parent().length) $("a:contains('" + $(this).html() + "')").not(this).remove(); });​ 

Nice solução pessoas. Aqui é minha

 for (i = 0; i < $('li').length; i++) { text = $('li').get(i); for (j = i + 1; j < $('li').length; j++) { text_to_compare = $('li').get(j); if (text.innerHTML == text_to_compare.innerHTML) { $(text_to_compare).remove(); j--; maxlength = $('li').length; } } } 

saudações

 $('.photo').each(function (index) { if (index > 0) { $(this).remove(); } });