JS 通用 工具方法

一. 数字加密

应用场合:在 url 中经常需要使用 id 值,而 id 有时候就是规律递增的整数 , 因此需要加密成无法被掌握规律的字符。

//根据密钥获取10*10的密码表,只在加密解密方法中调用
tool.codeTable = (function(keyCode) {
	keyCode = keyCode.slice(5,10).concat(keyCode.slice(0,5));
	var arr = [keyCode.reverse()];
	for(var j=1; j<10; j++) {
		var b,a;
		if(j%2==0) {
			a = arr[j-1].slice(0);
			a.push(a.shift());
			b = replace(a);
			b.unshift(b.pop());
		} else {
			a = arr[j-1];
			b = replace(a);
		}
		arr.push(b);
	}
	function replace(a) {
		var b = [];
		for(var i=0; i<a.length; i+=2) {
			b[i] = a[i+1];
			b[i+1] = a[i];
		}
		return b;
	}
	return arr;
})(["G","f","p","a","h","w","e","M","t","b"]);

/* @target 加密数字	
 * @param str 明文
 * @return 密文
 */
tool.numEncrypt = function(str) {
	str += "";
	if(!/^[0-9]*$/.test(str)) {
		return null;
	}
    var arr = str.split('');
    for (var i = 0; i < arr.length; i++){
    	var index = Math.floor(Math.random()*10);
    	arr[i] = config.keyCode[index]+tool.codeTable[index][arr[i]];
    } 
    return arr.reverse().join("");
}

/* @target 解密数字	
 * @param str 密文
 * @return 明文
 */
tool.numDecrypt = function(str) {
	if(!str) {
		return null;
	}
	str += "";
    var arr = str.split('');
    var arr2 = [];
    for(var i = 0; i <arr.length; i+=2) {
    	 var index = config.keyCode.indexOf(arr[i]);
    	 if(index < 0) {
    	 	return null;
    	 }
    	 var num = tool.codeTable[index].indexOf(arr[i+1]);
    	 if(num < 0) {
    	 	return null;
    	 }
    	 arr2.push(num);
    }
    return arr2.reverse().join("");
}

二. 随机分配

应用场合:抢红包,每个人的金额需要随机,但是不能相差太悬殊或太平均

/* @target 随机分配金额	
 * @param money 总金额
 * @param num 分配人数
 * @return 明文
 */
tool.allot = function(money,num) {
	//把金额单位 元转成分
	money *= 100;
	//金额少于人数,分配失败
	money -= num;
	if(money < 0) {
		return null;
	}
	//创建数组,保证每个人至少1分钱
	var arr = new Array(num);
	for(var i=0; i<arr.length; i++) {
		arr[i] = 1;
	} 
	var index,count;
	while(money>0) {
		//把剩下金额平均再取半(不取半第一个人会拿到太多钱),再取随机数
		count = Math.floor(Math.random()*money/num/2);
		count = count==0? 1 : count;
		//随机抽个人,把钱分给他
		index = Math.floor(Math.random()*num);
		arr[index] = arr[index] + count;
		money -= count;
	}
	//把金额单位 分转成元
	for(var i=0; i<arr.length; i++) {
		arr[i] /= 100;
		arr[i] += "  ";
	} 
	return arr;
}

三. 日期转字符串

应用场合:日期对象转指定字符串格式

/* @target 日期对象转字符串
 * @example 年-月-日 时:分:秒:毫秒
 * 		yyyy-MM-dd HH:mm:ss:SSS → 2018-08-08 08:08:08:888
 * 		yy-M-d H:m:s → 18-8-8 8:8:8
 * @param day : 目标日期
 * @param split : 分隔符,不传默认.号
 * @return 日期字符串
 */
tool.DateToString = function(day,format) {
	var year = day.getFullYear();
	var month = day.getMonth()+1;
	var date = day.getDate();
	var hour = day.getHours();
	var hour12 = (hour>12? hour-12 : hour);
	hour12 = (hour12==0? 12 : hour12);
	var minute = day.getMinutes();
	var second = day.getSeconds();
	var milliSecond = day.getMilliseconds();
	
	return format.replace("yyyy" , year)
				 .replace("yy" , new String(year).substring(2))
				 .replace("MM" , month<10? "0"+month : month)
				 .replace("M" , month)
				 .replace("dd" , date<10? "0"+date : date)
				 .replace("d" , date)
				 .replace("hh" , hour12<10? "0"+hour12 : hour12)
				 .replace("h" , hour12)
				 .replace("HH" , hour<10? "0"+hour : hour)
				 .replace("H" , hour)
				 .replace("mm" , minute<10? "0"+minute : minute)
				 .replace("m" , minute)
				 .replace("ss" , second<10? "0"+second : second)
				 .replace("s" , second)
				 .replace("SSS",milliSecond);
}

三. 读取JSON文件

$.getJSON("res/test.json",function(data) {
});
$.ajax({
	url:"res/test.json",
	type:"get",
	dataType:"json",
	success:function(data) {
	},
	error:function(data) {
	}
});

四. 模板引擎

/* @target 通过jtemplate加载数据
 * @param id : 被加载容器的id
 * @param data : 加载的数据
 */
tool.loadData = function(id,data) {
	var container = $("#"+id);
	var template = container.find('script[type="text/template"]').html();
	container.setTemplate(template);
	container.processTemplate(data);
}
<div class="app-ul" id="notice">
	<script type="text/template">
		<div>{$T.title}</div>
		{#foreach $T.paths as src}
			<div>{$T.src}</div>
		{#/for}
	</script>
</div>

<script>
	tool.loadData("notice",data);
</script>

Jtemplate下载地址:
https://pan.baidu.com/s/16u6NsFapo7UiMkcP3WIn3w

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值