jquery:检查多个列表中的重复项

时间:2011-11-23 10:49:19

标签: jquery duplicates

我有以下代码:

<ul id="listOne">
    <li>John</li>
    <li>James</li>
    <li>Mary</li>
</ul>

<ul id="listTwo">
    <li>John</li>
    <li>Mark</li>
    <li>Mary</li>
</ul>

我想要做的是隐藏第二个列表中的任何对象(如果它们已经在第一个列表中)。

有人可以提出任何建议吗?

2 个答案:

答案 0 :(得分:5)

可能会有更好的方法,但这首先想到的是:

var firstList = [];
$("#listOne li").each(function() {
    firstList.push($(this).text());
});
$("#listTwo li").filter(function() {
    return firstList.indexOf($(this).text()) > -1;
}).remove();

这是一个working example。它构建第一个列表中项目文本的数组,然后filters第二个列表中的项目仅返回第一个列表中的项目,然后从DOM中删除匹配的项目。 / p>

答案 1 :(得分:1)

我会map第一个列表到数组然后filter第二个列表值具有匹配的文本并隐藏这样的列表:

var values = $('#listOne li').map(function() { 
    return $(this).text();
}).get();

$('#listTwo li').filter(function() {
    return $.inArray($(this).text(), values) !== -1;
}).hide();

http://jsfiddle.net/infernalbadger/unTMz/