绝妙的函数:字符串去重
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('')
}