Home > Web Front-end > Front-end Q&A > How to remove duplicate strings in jquery

How to remove duplicate strings in jquery

藏色散人
Release: 2021-11-11 09:20:32
Original
2132 people have browsed it

jquery去掉重复字符串的方法:1、通过把字符串分割成数组,再对数组操作去重;2、通过unique方法实现去重;3、通过正则匹配的方式实现去重。

How to remove duplicate strings in jquery

本文操作环境:windows7系统、jquery1.8.1版、DELL G3电脑

jquery怎么去掉重复字符串?

jquery实现去除重复字符串的方法小结

本文实例总结了jquery实现去除重复字符串的方法。

分享给大家供大家参考,具体如下:

这里总结了三种去除重复字符串的方法:

把例子贴上,用jQuery方便些,首先要搭好环境,就是在同一目录下(同一文件夹下)保证有所使用的jquery1.8.1(如果是其他版本就在html代码中作相应改动)

第一:

<html>
<head>
<script src="jquery-1.8.1.js"></script>
<SCRIPT LANGUAGE="JavaScript">
$(function(){
 $(&#39;#delRepeat&#39;).click(function(){
  var str = $(&#39;#repeatValue&#39;).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;
     }
   }
   $(&#39;#noRepeat&#39;).val(result.join(""))//把数组连成字符串并展示到页面
 })
})
</SCRIPT>
</head>
<body>
原值<input id="repeatValue" type="text" ><input id="delRepeat" type="button" value="去重">
<input type="text" id="noRepeat">
</body>
</html>
Copy after login

说明:通常就是把字符串分割成数组,再对数组操作,相对来说数组的方法多些,方便些,最后再join成字符串

关于sort()方法,之所以先对数组元素排序,就是因为可以把相同的字符归到一起,就不用再双层循环,要不然就得拿到每个元素,和剩余的逐个比对,这个sort会按照ASCII 字符顺序进行升序排列

第二:

<html>
<head>
<script src="jquery-1.8.1.js"></script>
<SCRIPT LANGUAGE="JavaScript">
$(function(){
 $(&#39;#delRepeat&#39;).click(function(){
  var str = $(&#39;#repeatValue&#39;).val();
   var strArr=str.split("");
   //排序
   strArr.sort();
    var result =$.unique(strArr);
   $(&#39;#noRepeat&#39;).val(result.join(""));
 })
})
</SCRIPT>
</head>
<body>
原值<input id="repeatValue" type="text" ><input id="delRepeat" type="button" value="去重">
<input type="text" id="noRepeat">
</body>
</html>
Copy after login

说明,这个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(){
 $(&#39;#delRepeat&#39;).click(function(){
  var str = $(&#39;#repeatValue&#39;).val();
     var reg = /(.)(?=.*\1)/g;//预搜索方式(有的叫断言)
     var result = str.replace(reg, "");
     $(&#39;#noRepeat&#39;).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>
Copy after login

说明:

var reg =/(.)(?=.*\1)/g;
Copy after login

.匹配任意字符,但只能匹配任意字符中的一个

(.)加上()就是将匹配的该字符存储起来供以后引用

(?=)预搜索(也有叫断言的,也有叫预查的),指明某个字符的右侧是什么,但不包含这部分,只取这个‘某个字符'

如:p(?=ing)     匹配字符串ping时匹配成功,但匹配到的字符是p不是ping

(?=.*\1) 这个\1就是指的前面(.)的这个字符,之前说它被加上小括号就是被存储起来了,现在\1就是取存储的第一个(共一个)

*匹配次数,也有人称之为量词,指出现任意次

.*指出现任意次任意字符

(.)(?=.*\1)指第一个匹配字符,如果右侧出现的内容中包含该字符时就匹配上该字符

 g    指globle,全局匹配模式,匹配所有字符串

这个去重的结果其实是倒着来排序的,就是说重复字符出现在前面的都被置空了,是按一个字符从后往前出现的顺序排的

推荐学习:《jquery视频教程

The above is the detailed content of How to remove duplicate strings in jquery. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template