绝妙的函数:字符串去重

2018-11-01  本文已影响0人  喜欢唱歌的小狮子

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('')
}
上一篇下一篇

猜你喜欢

热点阅读