统计jQuery中各字符串出现次数的工具


Posted in Javascript onMay 03, 2012
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/> 
<title>工具:统计jQuery中各字符串出现次数</title> 
<script src="http://demo.3water.com/jslib/jquery/jquery.js" type="text/javascript"></script> 
</head> 
<body> 
<p>源文件(将jQuery源码复制到下面的文本域):</p> 
<p><textarea id="myjquery" style="width: 510px; height: 250px; padding: 2px;">..</textarea></p> 
<p><input id="mybtn2" style="position: relative; left: 349px;" type="button" value="统计所有字符串出现次数" /></p> 
<div id="myshow2" style="width: 500px; height: 250px; border: 1px dotted #8B8D72; overflow: auto; padding: 5px;"> </div> 
<p> </p> 
<p><label for="myinput">字符串:<input id="myinput" type="text" /> <input id="mybtn1" style="position: relative; left: 130px;" type="button" value="统计单个字符串出现次数" 
/> </label></p> 
<div id="myshow1" style="width: 500px; height: 100px; border: 1px dotted #8B8D72; overflow: auto; padding: 5px;"> </div> 
<p> </p> 
<p>点击“统计所有字符出现次数”按钮后发现,字符串“string”竟然出现了44次,多数是诸如以下的代码</p> 
<div class="cnblogs_Highlighter"> 
<pre class="brush:javascript;gutter:true;">typeof selector === "string" 
typeof data !== "string" 
type === "string" 
typeof context === "string" 
getByName = typeof name === "string" 
// ... 
</pre> 
</div> 
<p></p> 
<p>如果使用一个变量替换,使用工具压缩时将会进一步减少文件的大小。</p> 
<p> </p> 
<p> </p> 
<script type="text/javascript">// <![CDATA[ 
setTimeout(function(){ 
function buildRe(keywords) { 
var rObj = {}; 
if (keywords.constructor !== Array) { 
return; 
} 
keywords.forEach(function(it) { 
rObj[it] = RegExp(''+it, 'g'); 
}); 
return rObj; 
} 
function count(rObj, source, callback, sortType) { 
var r, 
rarr, 
num, 
type, 
func, 
result = []; 
var subCount = function(arr) { 
var i, re, num, resu; 
i = num = 0; 
for (i; i<arr.length; i++) { 
re = arr[i]; 
while( (resu=re.exec(source)) != null ) { 
num++; 
} 
} 
return num; 
}; 
for (type in rObj) { 
rarr = rObj[type]; 
if (rarr.constructor !== Array) { 
rarr = [rarr]; 
} 
num = subCount(rarr); 
result.push({type: type, num: num}); 
} 
// sort 0:次数顺序 1:次数倒序 
if (typeof sortType !== 'undefined') { 
if (sortType===0) { 
func = function(a, b) { 
return a.num - b.num; 
}; 
} else if (sortType===1) { 
func = function(a, b) { 
return b.num - a.num; 
}; 
} 
result.sort(func); 
} 
callback(result); 
} 
function main(keywords, source, callback, sortType) { 
var rObj = keywords.constructor === Array ? buildRe(keywords) : keywords; 
count(rObj, source, callback, sortType); 
} 
var rObj = { 
string: [/\'string\'/g, /\"string\"/g], 
number: [/\'number\'/g, /\"number\"/g], 
'boolean': [/\'boolean\'/g, /\"boolean\"/g], 
object: [/\'object\'/g, /\"object\"/g], 
'undefined': [/\'undefined\'/g, /\"undefined\"/g], 
'function': [/\'function\'/g, /\"function\"/g], 
'array': [/\'array\'/g, /\"array\"/g], 
'ready': [/\'ready\'/g, /\"ready\"/g], 
input: [/\'input\'/g, /\"input\"/g], 
type: [/\'type\'/g, /\"type\"/g], 
text: [/\'text\'/g, /\"text\"/g], 
radio: [/\'radio\'/g, /\"radio\"/g], 
checkbox: [/\'checkbox\'/g, /\"checkbox\"/g], 
password: [/\'password\'/g, /\"password\"/g], 
submit: [/\'submit\'/g, /\"submit\"/g], 
button: [/\'button\'/g, /\"button\"/g], 
id: [/\'id\'/g, /\"id\"/g], 
div: [/\'div\'/g, /\"div\"/g], 
body: [/\'body\'/g, /\"body\"/g], 
html: [/\'html\'/g, /\"html\"/g], 
HTML: [/\'HTML\'/g, /\"HTML\"/g], 
parentNode: [/\'parentNode\'/g, /\"parentNode\"/g], 
nextSibling: [/\'nextSibling\'/g, /\"nextSibling\"/g], 
iframe: [/\'iframe\'/g, /\"iframe\"/g], 
before: [/\'before\'/g, /\"before\"/g], 
after: [/\'after\'/g, /\"after\"/g], 
script: [/\'script\'/g, /\"script\"/g], 
width: [/\'width\'/g, /\"width\"/g], 
height: [/\'height\'/g, /\"height\"/g], 
top: [/\'top\'/g, /\"top\"/g], 
left: [/\'left\'/g, /\"left\"/g], 
absolute: [/\'absolute\'/g, /\"absolute\"/g], 
relative: [/\'relative\'/g, /\"relative\"/g], 
'static': [/\'static\'/g, /\"static\"/g], 
fixed: [/\'fixed\'/g, /\"fixed\"/g], 
href: [/\'href\'/g, /\"href\"/g], 
border: [/\'border\'/g, /\"border\"/g], 
margin: [/\'margin\'/g, /\"margin\"/g], 
marginTop: [/\'marginTop\'/g, /\"marginTop\"/g], 
marginBottom: [/\'marginBottom\'/g, /\"marginBottom\"/g], 
marginLeft: [/\'marginLeft\'/g, /\"marginLeft\"/g], 
marginRight: [/\'marginRight\'/g, /\"marginRight\"/g], 
padding: [/\'padding\'/g, /\"padding\"/g], 
paddingTop: [/\'paddingTop\'/g, /\"paddingTop\"/g], 
paddingLeft: [/\'paddingLeft\'/g, /\"paddingLeft\"/g], 
paddingRight: [/\'paddingRight\'/g, /\"paddingRight\"/g], 
display: [/\'display\'/g, /\"display\"/g], 
olddisplay: [/\'olddisplay\'/g, /\"olddisplay\"/g], 
none: [/\'none\'/g, /\"none\"/g], 
hidden: [/\'hidden\'/g, /\"hidden\"/g], 
inline: [/\'inline\'/g, /\"inline\"/g], 
opacity: [/\'opacity\'/g, /\"opacity\"/g], 
show: [/\'show\'/g, /\"show\"/g], 
hide: [/\'hide\'/g, /\"hide\"/g], 
toggle: [/\'toggle\'/g, /\"toggle\"/g], 
json: [/\'json\'/g, /\"json\"/g], 
success: [/\'success\'/g, /\"success\"/g], 
fxshow: [/\'fxshow\'/g, /\"fxshow\"/g], 
fx: [/\'fx\'/g, /\"fx\"/g], 
'.run': [/\'.run\'/g, /\".run\"/g], 
'http:': [/\'http:\'/g, /\"http:\"/g], 
error: [/\'error\'/g, /\"error\"/g], 
abort: [/\'abort\'/g, /\"abort\"/g], 
GET: [/\'GET\'/g, /\"GET\"/g], 
POST: [/\'POST\'/g, /\"POST\"/g], 
get: [/\'get\'/g, /\"get\"/g], 
filter: [/\'filter\'/g, /\"filter\"/g], 
px: [/\'px\'/g, /\"px\"/g] 
}; 
function callback1(result) { 
var obj = result[0]; 
var myshowEL = $('#myshow1'); 
myshowEL = myshowEL.empty(); 
myshowEL.append('<div>' + obj.type + ': <span style="color: blue;">' + obj.num + '</span></div>'); 
} 
function callback2(result) { 
var myshowEL = $('#myshow2'); 
myshowEL = myshowEL.empty(); 
for (var i=0; i<result.length; i++) { 
var obj = result[i]; 
myshowEL.append('<div>"' + obj.type + '": <span style="color: blue;">' + obj.num + '</span></div>'); 
} 
} 
$('#mybtn1').click(function(){ 
var $txtarea = $('#myjquery'); 
var source = $txtarea.val(); 
var val = $('#myinput').val(); 
if (val == '' || val.length<2) { 
alert('至少两个字符'); 
return; 
} 
var keywords = [val]; 
main(keywords, source, callback1, 1) 
}); 
$('#mybtn2').click(function(){ 
var $txtarea = $('#myjquery'); 
var source = $txtarea.val(); 
main(rObj, source, callback2, 1); 
}); 
}, 1000); 
// ]]></script> 
</body> 
</html>
Javascript 相关文章推荐
js触发asp.net的Button的Onclick事件应用
Feb 02 Javascript
jquery预览图片实现鼠标放上去显示实际大小
Jan 16 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
Jun 09 Javascript
javascript实现playfair和hill密码算法
Dec 07 Javascript
谈谈我对JavaScript DOM事件的理解
Dec 18 Javascript
javascript中Date对象应用之简易日历实现
Jul 12 Javascript
vue.js表格组件开发的实例详解
Oct 12 Javascript
Javascript创建类和对象详解
May 31 Javascript
使用axios实现上传图片进度条功能
Dec 21 Javascript
vue-cli项目中使用echarts图表实例
Oct 22 Javascript
如何在Vue.js中实现标签页组件详解
Jan 02 Javascript
Vue解决echart在element的tab切换时显示不正确问题
Aug 03 Javascript
JQuery插件Style定制化方法的分析与比较
May 03 #Javascript
拉动滚动条加载数据的jquery代码
May 03 #Javascript
基于jquery的固定表头和列头的代码
May 03 #Javascript
一个基于jQuery的树型插件(OrangeTree)使用介绍
May 03 #Javascript
ASP.NET中AJAX 调用实例代码
May 03 #Javascript
javascript中将Object转换为String函数代码 (json str)
Apr 29 #Javascript
基于jquery ajax 用户无刷新登录方法详解
Apr 28 #Javascript
You might like
php mysql 判断update之后是否更新了的方法
2012/01/10 PHP
在PHP语言中使用JSON和将json还原成数组的方法
2016/07/19 PHP
Yii2基于Ajax自动获取表单数据的方法
2016/08/10 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
2016/09/22 PHP
laravel7学习之无限级分类的最新实现方法
2020/09/30 PHP
js获取url参数的使用扩展实例
2007/12/29 Javascript
javascript 原型继承介绍
2011/08/30 Javascript
jQuery中has()方法用法实例
2015/01/06 Javascript
Jquery使用小技巧汇总
2015/12/29 Javascript
详解JavaScript 中的 replace 方法
2016/01/01 Javascript
Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
2017/07/19 Javascript
JavaScript之创意时钟项目(实例讲解)
2017/10/23 Javascript
使用pm2部署node生产环境的方法步骤
2019/03/09 Javascript
浅谈Three.js截图并下载的大坑
2019/11/01 Javascript
Vue2.X和Vue3.0数据响应原理变化的区别
2019/11/07 Javascript
Vue-router 报错NavigationDuplicated的解决方法
2020/03/31 Javascript
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
2021/02/11 Vue.js
[01:57]2018DOTA2亚洲邀请赛赛前采访-iG
2018/04/03 DOTA
python获取指定字符串中重复模式最高的字符串方法
2018/06/29 Python
python Tkinter版学生管理系统
2019/02/20 Python
Python将视频或者动态图gif逐帧保存为图片的方法
2019/09/10 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
2019/10/23 Python
Python 利用flask搭建一个共享服务器的步骤
2020/12/05 Python
BLACKMORES澳洲官网:澳大利亚排名第一的保健品牌
2018/09/27 全球购物
PHP解析URL是哪个函数?怎么用?
2013/05/09 面试题
函授药学自我鉴定
2014/02/07 职场文书
新员工试用期自我鉴定
2014/04/17 职场文书
村干部培训方案
2014/05/02 职场文书
会计人员演讲稿
2014/09/11 职场文书
大学生职业生涯十年规划书范文
2014/09/17 职场文书
2014物价局群众路线对照检查材料思想汇报
2014/09/21 职场文书
党员四风问题对照检查材料
2014/09/27 职场文书
走进科学观后感
2015/06/18 职场文书
CSS 实现多彩、智能的阴影效果
2021/05/12 HTML / CSS
教你用python实现12306余票查询
2021/06/30 Python
python+pyhyper实现识别图片中的车牌号思路详解
2022/12/24 Python