Javascript一句代码实现JS字符串去除重复字符

需求:

原字符串:abcdabecd

去重后字符串:abcde

JS字符串去重,一个简单需求,网上找案例发现都是一大堆代码,对于强迫症的我 实再无法忍受,于是自己手动写出一段代码,完美解决该问题。

代码如下:

[].filter.call(str,(s,i,o)=>o.indexOf(s)==i).join('');

里面的str直接替换成字符串或字符串变量即可。如:

var rs  =  [].filter.call("abcdabecd",(s,i,o)=>o.indexOf(s)==i).join('');

得到的rs即为 abcde

 

*以上为es6的函数写法,如浏览器不支持这种写法可替换为function形式:

[].filter.call(str,function(s,i,o){return o.indexOf(s)==i;}).join('');

 

思路分析:

核心思想为使用数组的filter方法过滤掉除第一次出现的字符以外其它字符,然后join连接字符串,s、i、o 3个参数分别为:当前字符、当前字符索引、原字符串

此方法妙处在于利用js的call方法改变宿主,使用字符串调用数组中的过滤方法(字符串无此方法),减少了复杂的循环步骤;并且此方法没有使用多余的变量减少内存开支;巧妙的利用indexOf取出字符串中第一次出现的字符(非第一次出现的字符被过滤掉)。因而实现此需求。

转载于:https://www.cnblogs.com/yzeng/p/8268731.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值