统计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 相关文章推荐
浅析Cookie中的Path与domain
Dec 18 Javascript
jquery动态更换设置背景图的方法
Mar 25 Javascript
javascript记录文本框内文字个数检测文字个数变化
Oct 14 Javascript
jQuery.holdReady()方法用法实例
Dec 27 Javascript
jscript读写二进制文件的方法
Apr 22 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
Jun 19 Javascript
Backbone.js的一些使用技巧
Jul 01 Javascript
jquery 实现回车登录详解及实例代码
Oct 23 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
Mar 31 Javascript
JS实现数组的增删改查操作示例
Aug 29 Javascript
小程序实现左滑删除效果
Jul 25 Javascript
JavaScript 判断浏览器是否是IE
Feb 19 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 缓存实现代码及详细注释
2010/05/16 PHP
php中将网址转换为超链接的函数
2011/09/02 PHP
php gzip压缩输出的实现方法
2013/04/27 PHP
php中base_convert()进制数字转换函数实例
2014/11/20 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
基于JQuery.timer插件实现一个计时器
2010/04/25 Javascript
jQuery操作 input type=checkbox的实现代码
2012/06/14 Javascript
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
js判断字符长度及中英文数字等
2014/03/19 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
jQuery抛物线运动实现方法(附完整demo源码下载)
2016/01/08 Javascript
javascript类型系统——undefined和null全面了解
2016/07/13 Javascript
JavaScript 总结几个提高性能知识点(推荐)
2017/02/20 Javascript
JS判断非空至少输入两个字符的简单实现方法
2017/06/23 Javascript
vue中的非父子间的通讯问题简单的实例代码
2017/07/19 Javascript
swiper动态改变滑动内容的实现方法
2018/01/17 Javascript
使用JavaScript破解web
2018/09/28 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
2019/06/07 Javascript
python中偏函数partial用法实例分析
2015/07/08 Python
用Python写一段用户登录的程序代码
2018/04/22 Python
python读取LMDB中图像的方法
2018/07/02 Python
python把数组中的数字每行打印3个并保存在文档中的方法
2018/07/17 Python
Python开发网站目录扫描器的实现
2019/02/21 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
Python图像阈值化处理及算法比对实例解析
2020/06/19 Python
纯css3实现图片翻牌特效
2015/03/10 HTML / CSS
便携式太阳能系统的创新者:GOAL ZERO
2018/02/04 全球购物
名人珠宝设计师:Melinda Maria Jewelry
2019/03/06 全球购物
西班牙在线药店:DosFarma
2020/03/28 全球购物
Puccini乌克兰:购买行李箱、女士手袋网上商店
2020/08/06 全球购物
Android面试题及答案
2015/09/04 面试题
实习会计求职自荐信范文
2014/03/10 职场文书
甜品蛋糕店创业计划书
2014/09/21 职场文书
2015年数学教研工作总结
2015/07/22 职场文书
MySQL 使用事件(Events)完成计划任务
2021/05/24 MySQL