说我有一个有重复值的链接列表如下:
- <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>
我怎么使用JQuery,删除重复项,并留下以下例如:
- <a href="#">Book</a>
- <a href="#">Magazine</a>
- <a href="#">DVD</a>
解决方法
- var seen = {};
- $('a').each(function() {
- var txt = $(this).text();
- if (seen[txt])
- $(this).remove();
- else
- seen[txt] = true;
- });
说明:
seen是将任何以前看到的文本映射到true的对象。它作为一个set包含所有以前看到的文本。行if(见[txt])检查文本是否在集合中。如果是,我们之前已看过此文字,因此我们删除了该链接。否则,这是我们第一次看到的链接文本。我们将其添加到集合中,以便删除具有相同文本的任何其他链接。
另一种表示集合的方法是使用包含所有值的数组。然而,这将使它慢得多,因为看看一个值是否在数组中,我们需要每次扫描整个数组。使用seen [txt]查找对象中的键在比较中非常快。