如何删除标记元素上的相同文本? 在这种情况下,我发现了这个伎俩:
var seen = '';
$('div').each(function() {
var see = $(this).text();
if (seen.match(see)) {
$(this).remove();
} else {
seen = $(this).text();
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>Book</div>
<div>Book</div>
<div>Book</div>
<div>Pencil</div>
<div>Pencil</div>
<div>Book Book Book Pencil Pencil</div>
上面的代码没错。因为我在同一个标签中包含了相同的几个单词。
<div>Book Book Book Pencil Pencil</div>
有解决这个问题的方法吗?
编辑:我想更改为<div>Book Pencil</div>
答案 0 :(得分:1)
我在下面给出了一个很好的解决方案。
注意:以下两个示例适用于您预期的相同脚本。它是一个通用脚本,适用于两个示例
示例1
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>Book</div>
<div>Book</div>
<div>Book</div>
<div>Pencil</div>
<div>Pencil</div>
<div>Book</div>
<div>Book Book Book Pencil Pencil</div>
<script>
var tags = [];
$('div').each(function(){
var tagArray = $(this).text().split(' ');
for(var i = tagArray.length - 1; i >= 0; i--) {
var tag = tagArray[i];
if(tags.indexOf(tag) > -1) {
tagArray.splice(i, 1);
} else {
tags.push(tag);
}
}
var currentTag = tagArray.join(' ');
if(currentTag){
$(this).text(currentTag);
}
else{
$(this).remove();
}
});
</script>
&#13;
示例2
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>Book Book Book Pencil Pencil</div>
<script>
var tags = [];
$('div').each(function(){
var tagArray = $(this).text().split(' ');
for(var i = tagArray.length - 1; i >= 0; i--) {
var tag = tagArray[i];
if(tags.indexOf(tag) > -1) {
tagArray.splice(i, 1);
} else {
tags.push(tag);
}
}
var currentTag = tagArray.join(' ');
if(currentTag){
$(this).text(currentTag);
}
else{
$(this).remove();
}
});
</script>
&#13;
答案 1 :(得分:1)
我想告诉你其他地方没有别的什么
var seen='';
var array=document.getElementsByTagName("div")[0].innerHTML.split(" ");
array.forEach(function(a,index){
var see=a;
if(seen.match(see)){
array.splice(index, 1);}
else{
seen=seen+a+" ";
}
});
$("div").text(seen);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>Book Book Book Pencil Pencil</div>
答案 2 :(得分:0)
var seen = '';
$('div').each(function() {
$(this).text($(this).text().replace(/(^|\s+)(\S+)(($|\s+)\2)+/gi, "$1$2"));
var see = $(this).text();
if (seen.match(see)) {
$(this).remove();
} else {
seen = $(this).text();
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>Book</div>
<div>Book</div>
<div>Book</div>
<div>Pencil</div>
<div>Pencil</div>
<div>Book Book Book Pencil Pencil pencil Pencil * * . . .</div>
<div>Book</div> <div>Book</div> <div>Pencil</div> <div>Book</div> <div>Pencil</div>
&#13;