html5统计字符串,统计jQuery中各字符串出现次数的工具_jquery-js教程

代码如下:

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

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

..

字符串: />

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

typeof selector === "string"

typeof data !== "string"

type === "string"

typeof context === "string"

getByName = typeof name === "string"

// ...

如果使用一个变量替换,使用工具压缩时将会进一步减少文件的大小。

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; ire = 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],

p: [/'p'/g, /"p"/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('

' + obj.type + ': ' + obj.num + '');

}

function callback2(result) {

var myshowEL = $('#myshow2');

myshowEL = myshowEL.empty();

for (var i=0; ivar obj = result[i];

myshowEL.append('

"' + obj.type + '": ' + obj.num + '');

}

}

$('#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》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值