方法一:Set
因为Set结构的特性是:无重复的元素。
let str = [...new Set('abcabcabcabc')].join('')
console.log(str)
VM904:2 abc
方法二:for循环
function noRepeat(str){
let s = "";
let flag;
let len = str.length;
for (let i=0;i<len;i++) {
flag=1;
let slen = s.length
for (let j=0;j<slen;j++) {
if(str[i]===s[j]) {
flag=0;
break;
}
}
if (flag) {
s+=str[i];
}
}
return s;
}
let ss = "abcabcabcabcd";
let tem = noRepeat(ss);
console.log(tem);
运行结果:
VM955:22 abcd
方法三:search()
function noRepeat(str){
let s = "";
let len = str.length;
for(let i=0;i<len;i++){
if(s.search(str[i])===-1){
s+=str[i]
}
}
return s;
}
let ss = "abcabcabcabcd";
let tem = noRepeat(ss);
console.log(tem);
运行结果:
VM193:13 abcd
方法四:indexOf
function noRepeat(str){
let s = "";
let len = str.length;
for(let i=0;i<len;i++){
if(s.indexOf(str[i])==-1){
s+=str[i]
}
}
return s;
}
let ss = "abcabcabcabcd";
let tem = noRepeat(ss);
console.log(tem);
运行结果:
VM263:13 abcd
方法五:对象属性
function noRepeat(str){
let s = "";
let obj = {};
let len = str.length;
for(let i=0;i<len;i++){
if(!obj[str[i]]){
s+=str[i]
obj[str[i]]=1
}
}
return s;
}
let ss = "abcabcabcabcd";
let tem = noRepeat(ss);
console.log(tem);
运行结果:
VM415:15 abcd
方法六:includes()
function noRepeat(str){
let s = "";
let len = str.length;
for(let i=0;i<len;i++){
if(!s.includes(str[i])){
s+=str[i]
}
}
return s;
}
let ss = "abcabcabcabcd";
let tem = noRepeat(ss);
console.log(tem);
运行结果:
VM842:13 abcd
方法七:filter()
原理:indexOf 总是返回第一个元素的位置,后续的重复元素位置与 indexOf 返回的位置不相等,因此被filter滤掉了,所以实现了去重。
let tem = [].filter.call("abcdefasfjklbbbaaa", (curr,i,str) => str.indexOf(curr)==i).join('');
console.log(tem);
运行结果:
VM1189:2 abcdefsjkl