当我们在整理合并文档文字列表的数据时,有时候会遇到出现重复行的问题,如果如果手动的一行行去找重复行的话,会比较浪费时间而且麻烦,这时候我们可以实用简洁的js代码在网页中打造一个去除列表中文字重复的小工具在浏览器中使用.
代码如下:
<textarea id="qccfh">33333
55555
888888
33333</textarea>
<button id="qccfhan" value="">去除重复行</button>
<div id="fhcfh"></div>
<script type="text/javascript">
document.getElementById("qccfhan").onclick = function(){
var szqccfh=[],ddddd = [],mhwz,dhhhh="",cfarrs= [],xxxxx="";
var hqwenr = document.getElementById('qccfh').innerHTML;
szqccfh = hqwenr.split(/[(\n)\n]+/);
function qcbq(qczylh){
return qczylh.replace(/(^\s*)|(\s*$)/g, "");
}
for (var i = 0; i < szqccfh.length; i++) {
mhwz = szqccfh[i];
var ddd = 0;
for (var j = 0; j < ddddd.length; j++) {
if(qcbq(ddddd[j]) == qcbq(mhwz)){
ddd = 1;
if(cfarrs.hasOwnProperty(j) == false){
cfarrs[j]=[mhwz,1];
}else{
var hhh = cfarrs[j]['1'];
hhh++;
cfarrs[j]=[mhwz,hhh];
}
i++;
break;
}
}
if(ddd != 1){
ddddd.push(mhwz);
dhhhh += mhwz + '<br>';
}
}
cfarrs.forEach(function(i,sxx){
xxxxx += cfarrs[sxx][0] + '重复' +cfarrs[sxx][1]+ '次<br>';
});
document.getElementById('fhcfh').innerHTML='去重后的新内容为:<br>'+dhhhh+'<br>'+xxxxx;
}
</script>
在id为qccfh的文本框中输入:
33333
55555
888888
33333
然后选择去除重复按钮后,首先document.getElementById("qccfh").onclick响应鼠标的点击事件.
在点击事件中var定义js变量
szqccfh用来存放原来每行的内容数组
ddddd存储去重后数据的数组
mhwz当前行的值
dhhhh去除重复行后的新内:
cfarrs重复数据以及次数数据:
xxxxx重复的数据与重复的次数:
然后document.getElementById('qccfh').innerHTML可以获取指定id为qccfh中的文本字符.
js中的split()方法将文本字符串中的每一行转为数组类型.
创建函数来用正则来快速去除每行内容的左右空格.
function qcbq(qczylh){return qczylh.replace(/(^\s*)|(\s*$)/g, "");}
继续用双重for循环,判断每一行的字符是否存在重复,将其存储在数组cfarrs里.
没有那么将第一层的循环的内容放在数组ddddd中,用来判断对比下次循环中是否与之前行有重复.
然后创建一个id为fhcfh的div元素用于显示去除重复后的文字内容.forEach方法循环输出重复行文字与出现的次数.
最后我们只需要在计算机中新建一个空白的文本,然后修改后缀将.txt改为.html,拖动到浏览器中打开即可使用这个自己diy的去重小工具.