由addClass衍生出来的字符串去重问题

现在先撇开性能不谈,就算是谈性能,也是把函数循环成千上万才看到几毫秒的差距,因此我才不管它呢。我首先考虑的是类库的大小,这就要求,不要才分膨胀其里的函数。

我在群里提出的问题是,要为一个className为"aaa eee bbb"的元素节点添加多两个类名,“aaa”,"ddd",如果让此实现尽可能的简单,不能用框架,不能用for循环。

经过一轮的跑题(主要如何用hash进行去重,总难免还是谈到性能上),最好得到两个比较好的方案:

方案2虽然精简,但还存在两个问题,1对b字母的区分,2不能移除空白,如碰到像 'a aa a-a a-b' 就无能为力了,希望高手能跟进。

方案3,感谢abcd友情提供:

var str= "aaa bbb eee aaa bbb kkk"; var reg = /(^|\s)(\S+)\s(?=(?:\S+\s)*\2(?:\s|$))/g; alert(str.replace(reg,"$1"));


下面测试运行框,大家可以把代码放到里面进行测试。

原文地址:https://www.cnblogs.com/rubylouvre/p/1946397.html