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取出字符串中第一次出現的字符(非第一次出現的字符被過濾掉)。因而實現此需求。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM