记录几种我看到的去除重复字符串的方式 简书上看到了一篇博文(www.jianshu.com/p/aed0280c0… 记录了一些字符串去重的方法,本人借鉴修改补充
1.es6新增的Set类
const deduplicate1 = str => [...new Set(str.split(''))].join('')
单从视觉上看还是有点冲击力的,非常简洁,可以放在一行。
2.使用filter函数
const deduplicate2 = str => {
let result = [],
cur = '',
sArr = str.split('')
while(sArr.length){
cur = sArr.shift()
result.push(cur)
sArr = sArr.filter(s => s !== cur)
}
return result.join('')
}
3.使用正则
const deduplicate3 = str => {
let result = [],
cur = '',
string = str
while(string.length){
cur = string.charAt(0)
result.push(cur)
string = string.replace(new RegExp(cur, 'igm'), '')
//这里原文用的是eval,我不太喜欢,所有改用正则构造函数生成了
}
return result.join('')
}
其实第三种方法思路和第二种差不多
4.补充一种老掉牙的方法
const deduplicate4 = str => {
let flag = {},
result = [],
cur = ''
while(str.length){
cur = str.charAt(0)
str = str.slice(1)
if (!flag[cur]) result.push(flag[cur] = cur)
}
return result.join('')
}