说我有一个有重复值的链接列表如下:
<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]查找对象中的键在比较中非常快。