Javascript一句代码实现JS字符串去除重复字符
2018-01-11 15:38
846 查看
需求:
原字符串:abcdabecd
去重后字符串:abcde
JS字符串去重,一个简单需求,网上找案例发现都是一大堆代码,对于强迫症的我 实再无法忍受,于是自己手动写出一段代码,完美解决该问题。
代码如下:
里面的str直接替换成字符串或字符串变量即可。如:
得到的rs即为 abcde
*以上为es6的函数写法,如浏览器不支持这种写法可替换为function形式:
思路分析:
核心思想为使用数组的filter方法过滤掉除第一次出现的字符以外其它字符,然后join连接字符串,s、i、o 3个参数分别为:当前字符、当前字符索引、原字符串
此方法妙处在于利用js的call方法改变宿主,使用字符串调用数组中的过滤方法(字符串无此方法),减少了复杂的循环步骤;并且此方法没有使用多余的变量减少内存开支;巧妙的利用indexOf取出字符串中第一次出现的字符(非第一次出现的字符被过滤掉)。因而实现此需求。
原字符串: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取出字符串中第一次出现的字符(非第一次出现的字符被过滤掉)。因而实现此需求。
相关文章推荐
- 2015年华为校招机试题和代码实现(分解字符串,拼音转数字,去除重复字符并排序,等式变换)
- JavaScript实现找出字符串中第一个不重复的字符
- 一段实现除去字符串中重复的js代码
- js字符串去重复id的实现代码
- 用js实现读取出字符串中每个字符重复出现的次数?
- js实现过滤重复字符和重复数组-javascript技巧
- js字符串去重复id的实现代码
- JS字符串去除连续或全部重复字符的实例
- js去除重复字符串两种实现方法
- JS 在数组插入字符的实现代码(可参考JavaScript splice() 方法)
- js去除重复字符串两种实现方法
- python split同时用多种字符分割字符串并去除空串 简单两行代码实现
- JS 删除字符串最后一个字符的实现代码
- JS实现查找字符串中第一个不重复的字符
- js替换字符串中所有指定的字符(实现代码)
- javascript 去除字符串中重复字符
- 递归实现一个去除字符串中“重复出现的字符”
- Javascript中去除两边的空格和JS中判断字符串中是否包含某字符
- 华为笔试1 去除重复字符并排序的字符串 c++ string 实现
- js 去除字符串中重复的字符