Kei*_*gan 40 jquery duplicates
假设我有一个重复值的链接列表如下:
<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>
Run Code Online (Sandbox Code Playgroud)
我将如何使用JQuery删除重复项,并留下以下内容,例如:
<a href="#">Book</a>
<a href="#">Magazine</a>
<a href="#">DVD</a>
Run Code Online (Sandbox Code Playgroud)
基本上我正在寻找一种方法来删除找到的任何重复值并显示每个链接1.
int*_*jay 111
var seen = {};
$('a').each(function() {
var txt = $(this).text();
if (seen[txt])
$(this).remove();
else
seen[txt] = true;
});
Run Code Online (Sandbox Code Playgroud)
说明:
seen
是一个将任何以前看到的文本映射到的对象true
.它作为一个包含所有以前看到的文本的集合.该行if (seen[txt])
检查文本是否在集合中.如果是这样,我们之前已经看过这个文本,所以我们删除了链接.否则,这是我们第一次看到的链接文本.我们将其添加到集合中,以便删除具有相同文本的任何其他链接.
表示集合的另一种方法是使用包含所有值的数组.但是,这会使速度慢得多,因为要查看数值是否在我们每次扫描整个数组所需的数组中.seen[txt]
相比之下,查找对象中的键是非常快的.
小智 11
使用jQuery方法$ .unique()
详情见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();
}
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
74074 次 |
最近记录: |