Say I have a list of links with duplicate values as below:
<a href="#">Book</a>
<a href="#">Magazine</a>
<a href="#">Book</a>
<a href="#">Book</a>
<a href="#">DVD</a>
<a href="#">DVD</a>
<a href="#">DVD</a>
<a href="#">Book</a>
How would I, using JQuery, remove the dups and be left with the following for example:
<a href="#">Book</a>
<a href="#">Magazine</a>
<a href="#">DVD</a>
Basically I am looking for a way to remove any duplicate values found and show 1 of each link.
Explanation:
seen
is an object which maps any previously seen text totrue
. It functions as a set containing all previously seen texts. The lineif (seen[txt])
checks to see if the text is in the set. If so, we've seen this text before, so we remove the link. Otherwise, this is a link text we see for the first time. We add it to the set so that any further links with the same text will be removed.An alternative way to represent a set is to use an array containing all values. However, this would make it much slower since to see if a value is in the array we'd need to scan the entire array each time. Looking up a key in an object using
seen[txt]
is very fast in comparison.Use jQuery method $.unique()
Detail see on http://api.jquery.com/jQuery.unique/
A quick and easy way would be
@interjay @Georg Fritzsche
Your fix didn't work in my case so I build a different version:
Hopes this provides someone else with a valid alternative short fix just in case.