统计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 相关文章推荐
msn上的tab功能Firefox对childNodes处理的一个BUG
Jan 21 Javascript
jquery 判断滚动条到达了底部和顶端的方法
Apr 02 Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
Sep 28 Javascript
javascript日期计算实例分析
Jun 29 Javascript
jQuery添加删除DOM元素方法详解
Jan 18 Javascript
Bootstrap按钮组件详解
Apr 26 Javascript
详解在Vue中通过自定义指令获取dom元素
Mar 04 Javascript
Javascript 一些需要注意的细节(必看篇)
Jul 08 Javascript
微信小程序select下拉框实现源码
Nov 08 Javascript
深入浅析golang zap 日志库使用(含文件切割、分级别存储和全局使用等)
Feb 19 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
Aug 25 Javascript
js实现鼠标滑动到某个div禁止滚动
Sep 17 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
不用iconv库的gb2312与utf-8的互换函数
2006/10/09 PHP
php+dbfile开发小型留言本
2006/10/09 PHP
PHP如何读取由JavaScript设置的Cookie
2017/03/22 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
window.addeventjs事件驱动函数集合addEvent等
2008/02/19 Javascript
javascript下判断一个对象是否具有指定名称的属性的的代码
2010/01/11 Javascript
判断目标是否是window,document,和拥有tagName的Element的代码
2010/05/31 Javascript
jQuery的DOM操作之删除节点示例
2014/01/03 Javascript
ext combobox动态加载数据库数据(附前后台)
2014/06/17 Javascript
jQuery中first()方法用法实例
2015/01/06 Javascript
knockoutjs动态加载外部的file作为component中的template数据源的实现方法
2016/09/01 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
2017/05/26 Javascript
JavaScript生成图形验证码
2020/08/24 Javascript
react-router4 嵌套路由的使用方法
2017/07/24 Javascript
Bootstrap Table实现定时刷新数据的方法
2018/08/13 Javascript
webpack-url-loader 解决项目中图片打包路径问题
2019/02/15 Javascript
vue实现登录页面的验证码以及验证过程解析(面向新手)
2019/08/02 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
2019/11/01 Javascript
mpvue微信小程序的接口请求fly全局拦截代码实例
2019/11/13 Javascript
手把手教你用python抢票回家过年(代码简单)
2018/01/21 Python
python的Crypto模块实现AES加密实例代码
2018/01/22 Python
Python中super函数用法实例分析
2019/03/18 Python
Python3 itchat实现微信定时发送群消息的实例代码
2019/07/12 Python
python使用信号量动态更新配置文件的操作
2020/04/01 Python
css3 transform属性详解
2014/09/30 HTML / CSS
Topman美国官网:英国著名的国际平价时尚男装品牌
2017/12/22 全球购物
法国床上用品商店:La Compagnie du lit
2019/12/26 全球购物
最新教师自我评价分享
2013/11/12 职场文书
护理实习自我鉴定
2013/12/14 职场文书
社区服务活动总结
2014/05/07 职场文书
宣传标语大全
2014/07/01 职场文书
趵突泉导游词
2015/02/03 职场文书
2019新学期家长会工作计划
2019/08/21 职场文书
读《解忧杂货店》有感:请相信一切都是最好的安排
2019/11/07 职场文书
实习员工转正的评语汇总,以备不时之需
2019/12/17 职场文书
python实现的人脸识别打卡系统
2021/05/08 Python