共通脚本utils
?
?
/** * 模塊名:共通腳本 * 程序名: 通用工具函數(shù) **/var utils = {};/** * 格式化字符串 * 用法: .formatString("{0}-{1}","a","b"); */ utils.formatString = function () {for (var i = 1; i < arguments.length; i++) {var exp = new RegExp('\\{' + (i - 1) + '\\}', 'gm');arguments[0] = arguments[0].replace(exp, arguments[i]);}return arguments[0]; };/** * 格式化時間顯示方式 * 用法:format="yyyy-MM-dd hh:mm:ss"; */ utils.formatDate = function (v, format) {if (!v) return "";var d = v;if (typeof v === 'string') {if (v.indexOf("/Date(") > -1)d = new Date(parseInt(v.replace("/Date(", "").replace(")/", ""), 10));elsed = new Date(Date.parse(v.replace(/-/g, "/").replace("T", " ").split(".")[0]));//.split(".")[0] 用來處理出現(xiàn)毫秒的情況,截取掉.xxx,否則會出錯 }var o = {"M+": d.getMonth() + 1, //month"d+": d.getDate(), //day"h+": d.getHours(), //hour"m+": d.getMinutes(), //minute"s+": d.getSeconds(), //second"q+": Math.floor((d.getMonth() + 3) / 3), //quarter"S": d.getMilliseconds() //millisecond };if (/(y+)/.test(format)) {format = format.replace(RegExp.$1, (d.getFullYear() + "").substr(4 - RegExp.$1.length));}for (var k in o) {if (new RegExp("(" + k + ")").test(format)) {format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));}}return format; };/** * 檢查是否為年月的日期格式 */ utils.checkYearMonthDate = function (v) {var reg = /^(\d{4})-(\d{2})$/;var result = v.match(reg);if (result == null) {return false}else {return true} };/** * 檢查是否為年月日的日期格式 */ utils.checkYearMonthDayDate = function (v) {var reg = /^(\d{4})-(\d{2})-(\d{2})$/;var result = v.match(reg);if (result == null) {return false}else {return true} };/** * 格式化數(shù)字顯示方式 * 用法 * formatNumber(12345.999,'#,##0.00'); * formatNumber(12345.999,'#,##0.##'); * formatNumber(123,'000000'); */ utils.formatNumber = function (v, pattern) {if (v == null)return v;var strarr = v ? v.toString().split('.') : ['0'];var fmtarr = pattern ? pattern.split('.') : [''];var retstr = '';// 整數(shù)部分 var str = strarr[0];var fmt = fmtarr[0];var i = str.length - 1;var comma = false;for (var f = fmt.length - 1; f >= 0; f--) {switch (fmt.substr(f, 1)) {case '#':if (i >= 0) retstr = str.substr(i--, 1) + retstr;break;case '0':if (i >= 0) retstr = str.substr(i--, 1) + retstr;else retstr = '0' + retstr;break;case ',':comma = true;retstr = ',' + retstr;break;}}if (i >= 0) {if (comma) {var l = str.length;for (; i >= 0; i--) {retstr = str.substr(i, 1) + retstr;if (i > 0 && ((l - i) % 3) == 0) retstr = ',' + retstr;}}else retstr = str.substr(0, i + 1) + retstr;}retstr = retstr + '.';// 處理小數(shù)部分 str = strarr.length > 1 ? strarr[1] : '';fmt = fmtarr.length > 1 ? fmtarr[1] : '';i = 0;for (var f = 0; f < fmt.length; f++) {switch (fmt.substr(f, 1)) {case '#':if (i < str.length) retstr += str.substr(i++, 1);break;case '0':if (i < str.length) retstr += str.substr(i++, 1);else retstr += '0';break;}}return retstr.replace(/^,+/, '').replace(/\.$/, ''); };/** * json格式轉(zhuǎn)樹狀結(jié)構(gòu) * @param {json} json數(shù)據(jù) * @param {String} id的字符串 * @param {String} 父id的字符串 * @param {String} children的字符串 * @return {Array} 數(shù)組 */ utils.toTreeData = function (a, idStr, pidStr, childrenStr) {var r = [], hash = {}, len = (a || []).length;for (var i = 0; i < len; i++) {hash[a[i][idStr]] = a[i];}for (var j = 0; j < len; j++) {var aVal = a[j], hashVP = hash[aVal[pidStr]];if (hashVP) {!hashVP[childrenStr] && (hashVP[childrenStr] = []);hashVP[childrenStr].push(aVal);} else {r.push(aVal);}}return r; };utils.eachTreeRow = function (treeData, eachHandler) {for (var i in treeData) {if (eachHandler(treeData[i]) == false) break;if (treeData[i].children)utils.eachTreeRow(treeData[i].children, eachHandler);} };utils.isInChild = function (treeData, pid, id) {var isChild = false;utils.eachTreeRow(treeData, function (curNode) {if (curNode.id == pid) {utils.eachTreeRow([curNode], function (row) {if (row.id == id) {isChild = true;return false;}});return false;}});return isChild; };utils.fnValueToText = function (list, value, text) {var map = {};for (var i in list) {map[list[i][value || 'value']] = list[i][text || 'text'];}var fnConvert = function (v, r) {return map[v];};return fnConvert; };utils.compareObject = function (v1, v2) {var countProps = function (obj) {var count = 0;for (k in obj) if (obj.hasOwnProperty(k)) count++;return count;};if (typeof (v1) !== typeof (v2)) {return false;}if (typeof (v1) === "function") {return v1.toString() === v2.toString();}if (v1 instanceof Object && v2 instanceof Object) {if (countProps(v1) !== countProps(v2)) {return false;}var r = true;for (k in v1) {r = utils.compareObject(v1[k], v2[k]);if (!r) {return false;}}return true;} else {return v1 === v2;} };utils.minusArray = function (arr1, arr2) {var arr = [];for (var i in arr1) {var b = true;for (var j in arr2) {if (utils.compareObject(arr1[i], arr2[j])) {b = false;break;}}if (b) {arr.push(arr1[i]);}}return arr; };utils.diffrence = function (obj1, obj2, reserve, ignore) {var obj = {}, reserve = reserve || [], ignore = ignore || [], reserveMap = {}, ignoreMap = {};for (var i in reserve)reserveMap[reserve[i]] = true;for (var i in ignore)ignoreMap[ignore[i]] = true;for (var k in obj1) {if (!ignoreMap[k] && (obj1[k] != obj2[k] || reserveMap[k])) {obj[k] = obj1[k];}}return obj; };utils.filterProperties = function (obj, props, ignore) {var ret;if (obj instanceof Array || Object.prototype.toString.call(obj) === "[object Array]") {ret = [];for (var k in obj) {ret.push(utils.filterProperties(obj[k], props, ignore));}}else if (typeof obj === 'object') {ret = {};if (ignore) {var map = {};for (var k in props)map[props[k]] = true;for (var i in obj) {if (!map[i]) ret[i] = obj[i];}}else {for (var i in props) {var arr = props[i].split(" as ");ret[arr[1] || arr[0]] = obj[arr[0]];}}}else {ret = obj;}return ret; };utils.copyProperty = function (obj, sourcePropertyName, newPropertyName, overWrite) {if (obj instanceof Array || Object.prototype.toString.call(obj) === "[object Array]") {for (var k in obj)utils.copyProperty(obj[k], sourcePropertyName, newPropertyName);}else if (typeof obj === 'object') {if (sourcePropertyName instanceof Array || Object.prototype.toString.call(sourcePropertyName) === "[object Array]") {for (var i in sourcePropertyName) {utils.copyProperty(obj, sourcePropertyName[i], newPropertyName[i]);}}else if (typeof sourcePropertyName === 'string') {if ((obj[newPropertyName] && overWrite) || (!obj[newPropertyName]))obj[newPropertyName] = obj[sourcePropertyName];}}return obj; };utils.clearIframe = function (context) {var frame = $('iframe', context).add(parent.$('iframe', context));if (frame.length > 0) {frame[0].contentWindow.document.write('');frame[0].contentWindow.close();frame.remove();if ($.browser.msie) {CollectGarbage();}} };utils.getThisIframe = function () {if (!parent) return null;var iframes = parent.document.getElementsByTagName('iframe');if (iframes.length == 0) return null;for (var i = 0; i < iframes.length; ++i) {var iframe = iframes[i];if (iframe.contentWindow === self) {return iframe;}}return null; }utils.functionComment = function (fn) {return fn.toString().replace(/^.*\r?\n?.*\/\*|\*\/([.\r\n]*).+?$/gm, ''); };utils.uuid = (function () { var a = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""); return function (b, f) { var h = a, e = [], d = Math.random; f = f || h.length; if (b) { for (var c = 0; c < b; c++) { e[c] = h[0 | d() * f]; } } else { var g; e[8] = e[13] = e[18] = e[23] = "-"; e[14] = "4"; for (var c = 0; c < 36; c++) { if (!e[c]) { g = 0 | d() * 16; e[c] = h[(c == 19) ? (g & 3) | 8 : g & 15]; } } } return e.join("").toLowerCase(); }; })();utils.getRequest = function (name, url) {var url = url || window.location.href;var theRequest = new Object();if (url.indexOf("?") != -1) {var str = url.split("?")[1];strs = str.split("&");for (var i = 0; i < strs.length; i++) {theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);}}return theRequest[name]; };//JOSN數(shù)組去重的算法 JS utils.unique = function (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; }//四舍五入,保留小數(shù)位 utils.xround = function (x, num) {x = Math.round(x * Math.pow(10, num)) / Math.pow(10, num);return x; }//獲取地址欄參數(shù) utils.GetQueryString = function (name) {var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");var r = window.location.search.substr(1).match(reg);if (r != null) return unescape(r[2]); return null; }?
轉(zhuǎn)載于:https://www.cnblogs.com/elves/p/5510680.html
總結(jié)
- 上一篇: 怎么查电动车的车架号?
- 下一篇: spark发行版笔记9