JS去除重复字符串

去除重复字符串我用到的三种方法:

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

第一、

[html] view plaincopy

  1. <html>
  2. <head>
  3. <script src="jquery-1.8.1.js"></script>
  4. <SCRIPT LANGUAGE="JavaScript">
  5. $(function(){
  6. $(‘#delRepeat‘).click(function(){
  7. var str = $(‘#repeatValue‘).val();
  8. var strArr=str.split("");//把字符串分割成一个数组
  9. strArr.sort();//排序
  10. var result=new Array();//创建出一个结果数组
  11. var tempStr="";
  12. for(var i in strArr)
  13. {
  14. if(strArr[i] != tempStr)
  15. {
  16. result.push(strArr[i]);
  17. tempStr=strArr[i];
  18. }
  19. else
  20. {
  21. continue;
  22. }
  23. }
  24. $(‘#noRepeat‘).val(result.join(""))//把数组连成字符串并展示到页面
  25. })
  26. })
  27. </SCRIPT>
  28. </head>
  29. <body>
  30. 原值<input id="repeatValue" type="text" ><input id="delRepeat" type="button" value="去重">
  31. <input type="text" id="noRepeat">
  32. </body>
  33. </html>

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

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

第二、

[html] view plaincopy

  1. <html>
  2. <head>
  3. <script src="jquery-1.8.1.js"></script>
  4. <SCRIPT LANGUAGE="JavaScript">
  5. $(function(){
  6. $(‘#delRepeat‘).click(function(){
  7. var str = $(‘#repeatValue‘).val();
  8. var strArr=str.split("");
  9. //排序
  10. strArr.sort();
  11. var result =$.unique(strArr);
  12. $(‘#noRepeat‘).val(result.join(""));
  13. })
  14. })
  15. </SCRIPT>
  16. </head>
  17. <body>
  18. 原值<input id="repeatValue" type="text" ><input id="delRepeat" type="button" value="去重">
  19. <input type="text" id="noRepeat">
  20. </body>
  21. </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] view plaincopy

  1. <html>
  2. <head>
  3. <script src="jquery-1.8.1.js"></script>
  4. <SCRIPT LANGUAGE="JavaScript">
  5. $(function(){
  6. $(‘#delRepeat‘).click(function(){
  7. var str = $(‘#repeatValue‘).val();
  8. var reg = /(.)(?=.*\1)/g;//预搜索方式(有的叫断言)
  9. var result = str.replace(reg, "");
  10. $(‘#noRepeat‘).val(result);
  11. })
  12. })
  13. </SCRIPT>
  14. </head>
  15. <body>
  16. 原值<input id="repeatValue" type="text" value="aca" ><input id="delRepeat" type="button" value="去重">
  17. <input type="text" id="noRepeat">
  18. </body>
  19. </html>

说明:

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

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

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

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

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

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

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

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

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

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

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

时间: 2024-08-06 07:41:13

JS去除重复字符串的相关文章

js去除重复字符串两种实现方法

方法一: 复制代码 代码如下: function checkRe(checkid) { var id = window.parent.getQry("ctrid") + "_"; var values = window.parent.opener.document.getElementById(id + "txt_dept_name").value; var keys = window.parent.opener.document.getElem

js 去除重复元素

方法一: 1 //数组去重的方法 2 Array.prototype.unique=function(){ 3 //集中声明变量 4 var 5 oldArr=this, 6 newArr=[oldArr[0]], 7 len=oldArr.length, 8 i=1; 9 //过滤空数组 10 if(!len) return this; 11 //过滤重复元素 12 for(;i<len;i++){ 13 newArr.indexOf(oldArr[i])<0 ? newArr.push(_

js去除重复数值

var c=[2,4,3,5,2,2,2], a = {}, i = 0; for(;i<c.length;i++){ a[c[i]] = 1 } c=[]; for(var g in a){ c.push(g-0); } console.log(c);

js去除日期字符串时分秒

var date = "2015-11-11 00:00:00"; var newDate=/\d{4}-\d{1,2}-\d{1,2}/g.exec(date) newDate="2015-11-11";

JS 去除重复元素的方法

Array.prototype.del = function () { var a = {}, c = [], l = this.length; for (var i = 0; i < l; i++) { var b = this[i]; var d = (typeof b) + b; if (a[d] === undefined) { c.push(b); a[d] = 1; } } return c; } 调用如下: var Ary = ["生活服务类", "健康保

js去除数组中的重复值

hasOwnProperty(property) 方法 JavaScript中hasOwnProperty函数方法是返回一个布尔值,指出一个对象是否具有指定名称的属性. 使用方法: object.hasOwnProperty(proName) 其中参数object是必选项.一个对象的实例.proName是必选项.一个属性名称的字符串值. 如果 object 具有指定名称的属性,那么JavaScript中hasOwnProperty函数方法返回 true:反之则返回 false.此方法无法检查该对

Java基础知识强化之集合框架笔记27:ArrayList集合练习之去除ArrayList集合中的重复字符串元素

1. 去除ArrayList集合中的重复字符串元素(字符串内容相同) 分析: (1)创建集合对象 (2)添加多个字符串元素(包含重复的) (3)创建新的集合 (4)遍历旧集合,获取得到每一个元素 (5)拿着个元素到新集合中去找,看有没有   有:不搭理它 没有:添加到新集合      (6)遍历新集合 2. 案例代码: 1 package cn.itcast_04; 2 3 import java.util.ArrayList; 4 import java.util.Iterator; 5 6

java去除重复的字符串和移除不想要的字符串

在java开发中碰到了有些字符串是重复的,如果在进行业务处理要全部遍历太对的数据就会重复,所以在进行业务处理前进行一个去重操作. 这里由于业务需要所以先将字符串转化为string数组,使用split分割,然后将string数组一个个放到list里(list的remove可以将你不要的字符串删除掉,代参数的哦) 可以看到我使用的是list,在list里包含了一个contains函数,表示当前字符串是否与list里的元素有相同没有就add进list里 在最后还将list里的元素转化为string数组

2015年华为校招机试题和代码实现(分解字符串,拼音转数字,去除重复字符并排序,等式变换)

再来一套2015年的华为机试题. 第一题(60分): 按要求分解字符串,输入两个数M,N:M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0.例如:输入2,8, "abc" ,"123456789",则输出为"abc00000","12345678","90000000" 分析思路: 容易题 1.获得字符串的长度length后,判断与要输出位数N的大小,大于N的话,直接printf前N位字符,然