绝妙的函数:字符串去重

Awesome Function: dedulpicate

在线演示

原始数据:'我我们都是勤勤劳的小蜜蜂蜂蜜我我们都是勤勤劳的...'

经过较大数据的测试,方法一和方法三的性能最好,不相上下,可见正则的威力还是很大的。
另外在正则方法的实现上,eval函数可谓是最大功臣,所以此函数并不是一无是处的。

方法一:利用ES6原生Set API

const deduplicate1 = string => {
    let result = Array.from(new Set(string.split(''))).join('')
    return result
}

方法二:逐一取出字符串首元素同时过滤相同元素

const deduplicate2 = string => {
    let result = []
    let arr = string.split('')
    while (arr.length) {
        let current = arr.shift()
        result.push(current)
        arr = arr.filter(item => item !== current)
    }
    return result.join('')
}

方法三:逐一取出字符串首元素同时过滤相同元素正则版

const deduplicate3 = string => {
    let s = string
    let result = []
    let current = ''
    while (s.length) {
        current = s[0]     
        result.push(current)   
        s = s.slice(1)
        s = s.replace(eval(`/${current}/g`), '')
    }
    return result.join('')
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容