统计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 相关文章推荐
MooTools 1.2中的Drag.Move来实现拖放
Sep 15 Javascript
Jquery中删除元素的实现代码
Dec 29 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
Sep 02 Javascript
jquery的each方法使用示例分享
Mar 25 Javascript
JavaScript实现的双向跨域插件分享
Jan 31 Javascript
Mobile Web开发基础之四--处理手机设备的横竖屏问题
Aug 11 Javascript
深入理解Node.js中通用基础设计模式
Sep 19 Javascript
AngularJS日期格式化常见操作实例分析
May 17 Javascript
用Node编写RESTful API接口的示例代码
Jul 04 Javascript
JavaScript ES6中的简写语法总结与使用技巧
Dec 30 Javascript
JS实现的全选、全不选及反选功能【案例】
Feb 19 Javascript
js实现删除li标签一行内容
Apr 16 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缓存的详解
2013/05/15 PHP
PHP解析RSS的方法
2015/03/05 PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
2016/09/11 PHP
Zend Framework动作控制器用法示例
2016/12/09 PHP
详解PHP防止直接访问.php 文件的实现方法
2017/07/28 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
使用CSS3实现字体颜色渐变的实现
2021/03/09 HTML / CSS
js AspxButton的客户端操作
2009/06/26 Javascript
js的隐含参数(arguments,callee,caller)使用方法
2014/01/28 Javascript
jQuery实现可用于博客的动态滑动菜单完整实例
2015/09/17 Javascript
基于jquery实现图片相关操作(重绘、获取尺寸、调整大小、缩放)
2015/12/25 Javascript
javascript类型系统 Array对象学习笔记
2016/01/09 Javascript
JS 通过系统时间限定动态添加 select option的实例代码
2016/06/09 Javascript
JavaScript编程中实现对象封装特性的实例讲解
2016/06/24 Javascript
JS键盘版计算器的制作方法
2016/12/03 Javascript
JS实现的点击表头排序功能示例
2017/03/27 Javascript
浅谈Angular4实现热加载开发旅程
2017/09/08 Javascript
vue实现密码显示隐藏切换功能
2018/02/23 Javascript
js实现超级玛丽小游戏
2020/03/18 Javascript
关于angular 8.1使用过程中的一些记录
2020/11/25 Javascript
[01:23]2014DOTA2国际邀请赛 球迷无处不在Ti现场世界杯受关注
2014/07/10 DOTA
Python爬虫抓取手机APP的传输数据
2016/01/22 Python
Flask数据库迁移简单介绍
2017/10/24 Python
Flask-Mail用法实例分析
2018/07/21 Python
Python I/O与进程的详细讲解
2019/03/08 Python
python+Django+pycharm+mysql 搭建首个web项目详解
2019/11/29 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
澳大利亚自然和有机的健康美容产品一站式商店:Ziani Beauty
2017/12/28 全球购物
Raleigh兰令自行车美国官网:英国凤头牌自行车
2018/01/08 全球购物
REISS美国官网:伦敦最受欢迎的时尚品牌
2019/08/16 全球购物
优秀社区干部事迹材料
2014/02/03 职场文书
大学生应聘导游自荐信
2014/06/02 职场文书
小学校本培训方案
2014/06/06 职场文书
专题组织生活会发言材料
2014/10/17 职场文书
小学科学教学计划
2015/01/21 职场文书
导游词之广东佛山(南风古灶)
2019/09/24 职场文书