某前端群里出了一個題目:封裝一個charStat函數(shù)用于統(tǒng)計(jì)給定網(wǎng)址中html源代碼中a-z字母(不區(qū)分大小寫)出現(xiàn)的次數(shù),函數(shù)返回Promise并resolve這樣一個對象:key為a-z(不可亂序)、value為對應(yīng)字母出現(xiàn)次數(shù)。為了排除掉網(wǎng)絡(luò)請求耗時(shí)影響,所以我們只優(yōu)化console.time('ms')與console.timeEnd('ms')之間的代碼,保證結(jié)果正確的前提下,通過比較輸出結(jié)果中的ms:后的數(shù)值大小來評價(jià)優(yōu)化結(jié)果。執(zhí)行多次,平均輸出大于50ms為E(不及格),在50ms內(nèi)評分為D等級方案,40ms內(nèi)為C,30ms內(nèi)為B,20ms內(nèi)為A,10ms左右算終極方案了以下是我的代碼,通過String.prototype.replace實(shí)現(xiàn),雖然比較精簡但耗時(shí)較長(98.593ms),并且不及格!??!constfetch=require('isomorphic-fetch')functioncharStat(url){returnfetch(url).then(response=>response.text()).then(html=>{console.time('ms')//聲明一個對象_c,并初始化key為a-z,value均為0let_c={},_range=['a'.charCodeAt(),'z'.charCodeAt()]for(leti=_range[0];i_c[i.toLowerCase()]++)console.timeEnd('ms')return_c})}charStat('http://www.sina.com.cn/').then(result=>console.log(result))輸出:ms:98.593ms{a:26200,b:6756,c:14579,d:10298,e:19402,f:6689,g:6065,h:9945,i:19735,j:1633,k:5128,l:16053,m:8322,n:17747,o:12169,p:8371,q:524,r:13153,s:18301,t:22605,u:5883,v:4111,w:4042,x:2013,y:3381,z:575}
優(yōu)化這個用于統(tǒng)計(jì)字母出現(xiàn)次數(shù)的函數(shù),看看你優(yōu)化后的函數(shù)需要耗時(shí)幾毫秒?
縹緲止盈
2019-05-23 11:31:31