JavaScript字符串去重的几种方法

记录几种我看到的去除重复字符串的方式 简书上看到了一篇博文(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('')
}
复制代码

转载于:https://juejin.im/post/5c20fbf2e51d45176760c01b

你可能感兴趣的:(JavaScript字符串去重的几种方法)