Javascript 查找列表中是否有重复的内容,并删除重复的实例

Javascript 查找列表中是否有重复的内容,并删除重复的实例,javascript,jquery,duplicates,Javascript,Jquery,Duplicates,基本上,我要做的是从共享同一类的项目列表中确定是否有任何重复内容,然后删除任何重复内容 以下是我迄今为止的尝试,但没有成功: var listItemContent = $(".featured-listing").textContent; if (listItemContent === listItemContent) { $('.featured-listing').hide(); } 这并没有真正起作用,我并不感到惊讶,因为js并不是我的强项,甚至在阅读它时,它似乎会获取“.fe

基本上,我要做的是从共享同一类的项目列表中确定是否有任何重复内容,然后删除任何重复内容

以下是我迄今为止的尝试,但没有成功:

var listItemContent = $(".featured-listing").textContent;
if (listItemContent === listItemContent) {
    $('.featured-listing').hide();
}
这并没有真正起作用,我并不感到惊讶,因为js并不是我的强项,甚至在阅读它时,它似乎会获取“.featured list”实例的内容,将其与自身进行比较,然后将其隐藏,从而导致该类的所有实例都被隐藏。问题是我不确定如何:

  • 检查该类的不同实例是否具有匹配的文本内容
  • 删除任何重复的内容
  • 请尝试以下代码段:

    var listItemContents=[];
    $(“.li”).each(函数(){
    var text=$(this.text();
    if(listItemContents.indexOf(text)=-1){
    listItemContents.push(文本);
    }
    否则{
    $(this.remove();
    }
    });
    
    
    
    • 文本1
    • 文本2
    • 文本3
    • 文本1
    • 文本4
    • 文本2
    试试这个片段:

    var listItemContents=[];
    $(“.li”).each(函数(){
    var text=$(this.text();
    if(listItemContents.indexOf(text)=-1){
    listItemContents.push(文本);
    }
    否则{
    $(this.remove();
    }
    });
    
    
    
    • 文本1
    • 文本2
    • 文本3
    • 文本1
    • 文本4
    • 文本2

    获取所有的
    特色清单
    。定义一个包含所有文本的主
    对象
    ,如果存在相同的文本,则删除一个元素:

    var elements = {};
    
    $('.featured-listsing').each(function () {
    
        var currentText = $(this).text();
    
        if ( elements[currentText] )
    
            $(this).remove();
    
        else
    
            elements[currentText] = true;
    
    });
    

    获取所有的
    特色列表
    。定义一个包含所有文本的主
    对象
    ,如果存在相同的文本,则删除一个元素:

    var elements = {};
    
    $('.featured-listsing').each(function () {
    
        var currentText = $(this).text();
    
        if ( elements[currentText] )
    
            $(this).remove();
    
        else
    
            elements[currentText] = true;
    
    });
    

    您可以过滤
    jQuery
    列表对象,并将重复的对象隐藏起来。检查下一个
    fiddle
    ,该技术是检查具有相同文本内容的上一个同级项的项目,并用它们创建一个新的
    jQuery
    列表:

    let items=$(“.li”);
    让repes=items.filter((ind,itm)=>$(itm).prevAll(`:contains(${itm.innerText})`).length);
    repes.remove()
    
    
    
    • 1-内容01
    • 2-内容02
    • 1-内容01
    • 3-内容03
    • 4-内容04
    • 2-内容02
    • 5-内容05
    • 6-内容06
    • 2-内容02
    • 7-内容07

    您可以过滤您的
    jQuery
    列表对象,并将重复的对象隐藏起来。检查下一个
    fiddle
    ,该技术是检查具有相同文本内容的上一个同级项的项目,并用它们创建一个新的
    jQuery
    列表:

    let items=$(“.li”);
    让repes=items.filter((ind,itm)=>$(itm).prevAll(`:contains(${itm.innerText})`).length);
    repes.remove()
    
    
    
    • 1-内容01
    • 2-内容02
    • 1-内容01
    • 3-内容03
    • 4-内容04
    • 2-内容02
    • 5-内容05
    • 6-内容06
    • 2-内容02
    • 7-内容07

    这很有意义,看起来应该可以工作,感谢您的快速响应!html基本上是一样的,但是很抱歉没有发布它。尝试此操作时,我遇到了一个奇怪的控制台错误,看起来有什么东西正在删除var声明中的[]括号。我得到一个控制台错误“Unexpected token;”,看起来var呈现为:“var listItemContents=;”。我要深入研究,看看是否能解决这个问题,但如果这看起来像是一个熟悉的问题,我会接受建议哈哈。@tganyan你说的“渲染为”是什么意思?您是如何以任何模板或服务器端语言呈现这些代码的?
    []
    必须在那里!哈哈,对不起,糟糕的单词选择,我只是说在代码运行之前,有什么东西正在从变量声明中删除括号。所发生的事情是我所处环境所独有的;我使用的是一种旧的令牌模板,其中所有令牌都遵循“[SOME-PROPERTY]”的语法,因此括号是为此保留的。在这种情况下,我不得不使用“新数组”来绕过它。否则,这将完全按照需要工作,谢谢@哦,我明白了。那好吧!很高兴为您提供帮助这是有意义的,看起来它应该可以工作,感谢您的快速响应!html基本上是一样的,但是很抱歉没有发布它。尝试此操作时,我遇到了一个奇怪的控制台错误,看起来有什么东西正在删除var声明中的[]括号。我得到一个控制台错误“Unexpected token;”,看起来var呈现为:“var listItemContents=;”。我要深入研究,看看是否能解决这个问题,但如果这看起来像是一个熟悉的问题,我会接受建议哈哈。@tganyan你说的“渲染为”是什么意思?您是如何以任何模板或服务器端语言呈现这些代码的?
    []
    必须在那里!哈哈,对不起,糟糕的单词选择,我只是说在代码运行之前,有什么东西正在从变量声明中删除括号。所发生的事情是我所处环境所独有的;我使用的是一种旧的令牌模板,其中所有令牌都遵循“[SOME-PROPERTY]”的语法,因此括号是为此保留的。在这种情况下,我不得不使用“新数组”来绕过它。否则,这将完全按照需要工作,谢谢@哦,我明白了。那好吧!很高兴帮助hi@quirimmo,将
    var
    元素的名称更改为
    seen
    。在当前代码
    中,请参见