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