JavaScript中字符串去重的六种方法

面试过程中很容易会被问到关于字符串去重的问题,今天就来完整的分享一下关于字符串去重的解决方案,其中有自己总结的部分,也有在网上参考别人的部分,希望对你们有帮助吧。
方法一:for循环遍历

function removeRepeatStr(str){
    var newStr = '';
    var flag;
    var len = str.length;
    for(var i=0; i<len; i++){
        flag = 1;
        var newLen = newStr.length;
        for(var j=0; j<newLen; j++){
            if(str[i] == newStr[j]){
                flag = 0;
                break;
            }
        }
        if(flag){
            newStr = newStr + str[i];
        }
    }
    return newStr; 
}
var str='womendeaiwomingbai'
console.log(removeRepeatStr(str)) 

方法二:indexof

function removeRepeat(str){
    var newStr = '';
    var len = str.length;
    for(var i=0; i<len; i++){
        if(newStr.indexOf(str[i])==-1){
            newStr = newStr + str[i];
        }
    }
    return newStr;
}
var str='womendouyiyang'
console.log(removeRepeat(str)) 

方法三:search方法

function removeRepeat(str){
   var newStr = '';
   var len = str.length;
   for(var i=0; i<len; i++){
       if(newStr.search(str[i])==-1){
           newStr = newStr + str[i];
       }
   }
   return newStr;
}
var str='aaaaa'
console.log(removeRepeat(str)) 

方法四:对象属性

function removeRepeat(str){
   var obj={};
   var newStr="";
   for(var i=0;i<str.length;i++){
       if(!obj[str[i]]){
           newStr+=str[i];
           obj[str[i]]=1;
       }
   }
   return newStr;
}
var str='aaaaa'
console.log(removeRepeat(str)) 

方法五:转为数组去重
关于字符串的去重有多种方式,最容易联想到的其实算是将字符串转为数组,对数组进行去重,这里我提供一种字符串去重的方式。

<script type="text/javascript">
		var str="aabccd"
		var arr=str.split("")
		console.log(arr)//["a", "a", "b", "c", "c", "d"]
		var obj={}
		for (var i = 0; i < arr.length; i++) {
			//若为第一次出现
			if(obj[arr[i]]==undefined){
				obj[arr[i]]=1
			}else{
				obj[arr[i]]++
			}
		}
		console.log(obj)//{a: 2, b: 1, c: 2, d: 1}
		
		var str1=""
		for (var i in obj) {
			//i代表的是a,b,c,d
			str1+=i
			document.write(i+":"+obj[i])
		}
		document.write("<br>"+str1)
	</script>

方法六:set字符串去重

console.log([...new Set('abbdeeac')].join(''));   // abdec
  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值