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
。在当前代码中,请参见