js去除重复字符串三种方法

发布时间:2019-08-03编辑:脚本学堂
本文介绍了js去除重复字符串的三种方法,js如何实现字符串去重,有需要的朋友参考下。

用js结合jquery去除字符串的重复内容。

在同一目录下(同一文件夹下)保证有所使用的jquery1.8.1(如果是其他版本就在html代码中作相应改动)

第一、
 

复制代码 代码示例:
<html> 
<head> 
<script src="jquery-1.8.1.js"></script> 
<script language="javascript"> 
$(function(){ 
    $('#delrepeat').click(function(){
        var str = $('#repeatvalue').val(); 
            var strarr=str.split("");//把字符串分割成一个数组 
             
            strarr.sort();//排序 
            var result=new array();//创建出一个结果数组 
            var tempstr=""; 
            for(var i in strarr) 
            { 
                 if(strarr[i] != tempstr) 
                 { 
                      result.push(strarr[i]); 
                      tempstr=strarr[i]; 
                 } 
                 else 
                 { 
                      continue
                 } 
            } 
            $('#norepeat').val(result.join(""))//把数组连成字符串并展示到页面 
    }) 
})
</script> 
</head> 
<body> 
原值<input id="repeatvalue" type="text" ><input id="delrepeat" type="button" value="去重"> 
<input type="text" id="norepeat"> 
</body> 
</html> 

说明:通常就是把字符串分割成数组,再对数组操作,相对来说数组的方法多些,方便些,最后再join成字符串
关于sort()方法,之所以先对数组元素排序,就是因为可以把相同的字符归到一起,就不用再双层循环,要不然就得拿到每个元素,和剩余的逐个比对,这个sort会按照ascii 字符顺序进行升序排列
第二、
 

复制代码 代码示例:
<html> 
<head> 
<script src="jquery-1.8.1.js"></script>
<script language="javascript"> 
$(function(){ 
    $('#delrepeat').click(function(){ 
        var str = $('#repeatvalue').val(); 
            var strarr=str.split(""); 
            //排序 
            strarr.sort(); 
                var result =$.unique(strarr); 
            $('#norepeat').val(result.join(""));
    }) 
})
</script> 
</head> 
<body> 
原值<input id="repeatvalue" type="text" ><input id="delrepeat" type="button" value="去重"> 
<input type="text" id="norepeat"> 
</body> 
</html> 

说明,这个unique方法确实方便,但有两个缺陷:
1、只对数组有效(直接字符串不行),并且该数组不能是数字数组,
2、只对相邻的重复元素有效,隔开的不行。
例如:[a,a,b,b,c,c]---unique----》[a,b,c]有效
[a,a,b,b,c,c,a]--unique-->[a,b,c,a]元素a仍然重复,无效
因此调用unique之前必须调用一下sort方法将其重复元素重排一下,挨在一起
但也因为调用了sort方法,顺序给重排了如:[b,b,c,c,a,a]---unique-->[a,b,c]不是[b,c,a]

第三、
 

复制代码 代码示例:
<html> 
<head> 
<script src="jquery-1.8.1.js"></script> 
<script language="javascript"> 
 $(function(){ 
    $('#delrepeat').click(function(){ 
        var str = $('#repeatvalue').val(); 
                    var reg = /(.)(?=.*1)/g;//预搜索方式(有的叫断言)      
                    var result = str.replace(reg, "");  
                    $('#norepeat').val(result); 
    }) 
}) 
</script> 
</head> 
<body> 
原值<input id="repeatvalue" type="text" value="aca" ><input id="delrepeat" type="button" value="去重"> 
<input type="text" id="norepeat"> 
</body> 
</html>

说明:
var reg =/(.)(?=.*1)/g;
.匹配任意字符,但只能匹配任意字符中的一个
(.)加上()就是将匹配的该字符存储起来供以后引用
(?=)预搜索(也有叫断言的,也有叫预查的),指明某个字符的右侧是什么,但不包含这部分,只取这个‘某个字符’
如:p(?=ing)     匹配字符串ping时匹配成功,但匹配到的字符是p不是ping
(?=.*1) 这个1就是指的前面(.)的这个字符,之前说它被加上小括号就是被存储起来了,现在1就是取存储的第一个(共一个)
*匹配次数,也有人称之为量词,指出现任意次
.*指出现任意次任意字符
(.)(?=.*1)指第一个匹配字符,如果右侧出现的内容中包含该字符时就匹配上该字符
 g    指globle,全局匹配模式,匹配所有字符串
 
这个去重的结果其实是倒着来排序的,就是说重复字符出现在前面的都被置空了,是按一个字符从后往前出现的顺序排的。