统计jQuery中各字符串出现次数的工具
统计jQuery中各字符串出现次数的工具
发布时间:2016-12-30 来源:查字典编辑
摘要:复制代码代码如下:工具:统计jQuery中各字符串出现次数源文件(将jQuery源码复制到下面的文本域):..字符串:点击“统计...

复制代码 代码如下:

<!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.jb51.net/jslib/jquery/jquery.js" type="text/javascript"></script>

</head>

<body>

<p>源文件(将jQuery源码复制到下面的文本域):</p>

<p><textarea id="myjquery">..</textarea></p>

<p><input id="mybtn2" type="button" value="统计所有字符串出现次数" /></p>

<div id="myshow2"></div>

<p></p>

<p><label for="myinput">字符串:<input id="myinput" type="text" /> <input id="mybtn1" type="button" value="统计单个字符串出现次数"

/> </label></p>

<div id="myshow1"></div>

<p></p>

<p>点击“统计所有字符出现次数”按钮后发现,字符串“string”竟然出现了44次,多数是诸如以下的代码</p>

<div>

<pre>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>' + 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>' + 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教程学习
热门Javascript教程学习
编程开发子分类