var Utils = {};
//对象深拷贝
Utils.clone = function (src) { if(!!src && typeof src === 'object'){ var t = new src.constructor(); for(var k in src){ t[k] = this.clone(src[k]); } return t; } return src; };
//随机种子
Utils.setRandomSeed =function (seed) {
this._seed = seed;
},
Utils.seededRandom = function (min, max) {
this._seed = this._seed || 2014;
max = max || 1;
min = min || 0;
this._seed = (this._seed * 9301 + 49297) % 233280;
var rnd = this._seed / 233280;
var ret = min + rnd * (max - min);
return ret;
},
//倒计时函数
Utils.getRTime = function (endTime) { var EndTime= new Date(endTime); var NowTime = new Date(); var t =EndTime.getTime() - NowTime.getTime(); var d=0; var h=0; var m=0; var s=0; if(t>=0){ h=Math.floor(t/1000/60/60%24); m=Math.floor(t/1000/60%60); s=Math.floor(t/1000%60); } return {h: h, m: m, s: s}; };
//对象排序
Utils.sortByProperty = function(object, propertyName) { function unique(arr) { var result = [], hash = {}; for (var i = 0, elem; (elem = arr[i]) != null; i++) { if (!hash[elem]) { result.push(elem); hash[elem] = true; } } return result; } var map = {}; var sortArray = []; var resultArray = []; for(var key in object) { sortArray.push(object[key][propertyName] | 0); if(object[key][propertyName] in map) { map[object[key][propertyName]] = map[object[key][propertyName]] + ';' + key; continue; } map[object[key][propertyName]] = key; } sortArray = unique(sortArray); sortArray.sort(function(a, b) {return b - a}); sortArray.forEach(function(key) { map[key].split(';').forEach(function(ID) { resultArray.push(object[ID]); }) }); return resultArray; };
/ * 阿拉伯数字转为中文. * @function * @param {Number} num 阿拉伯数字 * @return {String} 中文数字 */ Utils.changeChineseNum = function (num) { var _change = { ary0:["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"], ary1:["", "十", "百", "千"], ary2:["", "万", "亿", "兆"], init:function (name) { this.name = name; }, strrev:function () { var ary = [] for (var i = this.name.length; i >= 0; i--) { ary.push(this.name[i]) } return ary.join(""); }, pri_ary:function () { var $this = this var ary = this.strrev(); var zero = "" var newary = "" var i4 = -1 for (var i = 0; i < ary.length; i++) { if (i % 4 == 0) { //首先判断万级单位,每隔四个字符就让万级单位数组索引号递增 i4++; newary = this.ary2[i4] + newary; //将万级单位存入该字符的读法中去,它肯定是放在当前字符读法的末尾,所以首先将它叠加入$r中, zero = ""; //在万级单位位置的“0”肯定是不用的读的,所以设置零的读法为空 } //关于0的处理与判断。 if (ary[i] == '0') { //如果读出的字符是“0”,执行如下判断这个“0”是否读作“零” switch (i % 4) { case 0: break; //如果位置索引能被4整除,表示它所处位置是万级单位位置,这个位置的0的读法在前面就已经设置好了,所以这里直接跳过 case 1: case 2: case 3: if (ary[i - 1] != '0') { zero = "零" } ; //如果不被4整除,那么都执行这段判断代码:如果它的下一位数字(针对当前字符串来说是上一个字符,因为之前执行了反转)也是0,那么跳过,否则读作“零” break; } newary = zero + newary; zero = ''; } else { //如果不是“0” newary = this.ary0[parseInt(ary[i])] + this.ary1[i % 4] + newary; //就将该当字符转换成数值型,并作为数组ary0的索引号,以得到与之对应的中文读法,其后再跟上它的的一级单位(空、十、百还是千)最后再加上前面已存入的读法内容。 } } if (newary.indexOf("零") == 0) { newary = newary.substr(1) }//处理前面的0 if(newary[0] === '一' && newary.length ===2) { newary = newary[1]; } return newary; } } function change() { this.init.apply(this, arguments); } change.prototype = _change; var _k = new change(num + ''); return _k.pri_ary() };