JS字符串去重
需求:
原字符串:abcdabecd
去重后字符串:abcde
代码如下:
var str = "this is an apple."; var rs = [].filter.call(str,(s,i,o)=>o.indexOf(s)==i).join(''); // 以上为es6的函数写法,如浏览器不支持这种写法可替换为function形式 // [].filter.call(str,function(s,i,o){return o.indexOf(s)==i;}).join(''); console.log(rs);
思路分析:
核心思想为使用数组的filter方法过滤掉除第一次出现的字符以外其它字符,然后join连接字符串,s、i、o 3个参数分别为:当前字符、当前字符索引、原字符串
此方法妙处在于利用js的call方法改变宿主,使用字符串调用数组中的过滤方法(字符串无此方法),减少了复杂的循环步骤;并且此方法没有使用多余的变量减少内存开支;巧妙的利用indexOf取出字符串中第一次出现的字符(非第一次出现的字符被过滤掉)。因而实现此需求。
灵感来自:https://www.cnblogs.com/yzeng/p/8268731.html
本站文章除注明转载/出处外,均为原创,若要转载请务必注明出处。转载后请将转载链接通过邮件告知我站,谢谢合作。本站邮箱:admin@only4.work
尊重他人劳动成果,共创和谐网络环境。点击版权声明查看本站相关条款。