优化这个用于统计字母出现次数的函数,看看你优化后的函数需要耗时几毫秒?

某前端群里出了一个题目:封装一个charStat函数用于统计给定网址中html源代码中a-z字母(不区分大小写)出现的次数,函数返回Promise并resolve这样一个对象:key为a-z(不可乱序)、value为对应字母出现次数。为了排除掉网络请求耗时影响,所以我们只优化console.time('ms')与console.timeEnd('ms')之间的代码,保证结果正确的前提下,通过比较输出结果中的ms:后的数值大小来评价优化结果。执行多次,平均输出大于50ms为E(不及格),在50ms内评分为D等级方案,40ms内为C,30ms内为B,20ms内为A,10ms左右算终极方案了
以下是我的代码,通过String.prototype.replace实现,虽然比较精简但耗时较长(98.593ms),并且不及格!!!
constfetch=require('isomorphic-fetch')
functioncharStat(url){
returnfetch(url)
.then(response=>response.text())
.then(html=>{
console.time('ms')
//声明一个对象_c,并初始化key为a-z,value均为0
let_c={},_range=['a'.charCodeAt(),'z'.charCodeAt()]
for(leti=_range[0];i<=_range[1];i++){
_c[String.fromCharCode(i)]=0
}
//以下是我觉得重点需要优化的部分
html.replace(/[a-z]/ig,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}
杨魅力
浏览 200回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript