petite-utils
Version:
A collection of small util function in JavaScript.
3 lines (2 loc) • 6.56 kB
JavaScript
!function(r,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((r||self).PU={})}(this,function(r){function t(r){return Object.prototype.toString.call(r).slice(8,-1).toLowerCase()}function n(r){return"object"==typeof r&&null!==r}function e(r){return"boolean"==typeof r}function i(r){return null==r}function o(r){return"number"==typeof r?0*r==0:"bigint"==typeof r}function u(r){return"string"==typeof r}function a(r){return""===r}function f(r){return!i(r)&&!!r&&("function"===t(r)||"function"==typeof r||r instanceof Function)}var c=function(r){var n,e=t(r);if(!["object","array"].includes(e))return r;if("array"===e){n=[];for(var i=0,o=r.length;i<o;)n[i]=c(r[i]),i++}else if("object"===e)for(var u in n={},r)Object.prototype.hasOwnProperty.call(r,u)&&(n[u]=c(r[u]));return n};r.chunk=function(r,t){if(!Array.isArray(r))throw new Error("第一个参数必须是一个一维数组");if(!o(t))throw new Error("第二个参数必须是一个数字");for(var n=[],e=0;e<r.length;e+=t)n.push(r.slice(e,e+t));return n},r.clone=c,r.copy=function(r){return navigator.clipboard&&navigator.permissions?navigator.clipboard.writeText(r).then(function(){return Promise.resolve(!0)}).catch(function(){return Promise.resolve(!1)}):new Promise(function(t){var n=document.createElement("textArea");n.value=r,n.style.width="0px",n.style.position="fixed",n.style.left="-999px",n.style.top="10px",n.setAttribute("readonly","readonly"),document.body.appendChild(n),n.select(),document.execCommand("copy"),document.body.removeChild(n),t(!0)})},r.debounce=function(r,t,n){var e;return void 0===t&&(t=200),void 0===n&&(n=!1),function(){var i=[].slice.call(arguments);n&&!e&&r.apply(void 0,i),e&&clearTimeout(e),e=setTimeout(function(){r.apply(void 0,i)},t)}},r.identityCodeValid=function(r){if(i(r)||a(r))return[!1,"身份证号不能为空"];if(!o(r)&&!u(r))return[!1,"身份证号必须是数字或者字符串"];var t="",n=!0;if(15!==(r=r.toString()).length&&18!==r.length)return[!1,"身份证号长度错误, 必须是15位或者18位"];if(!/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|[xX])$/i.test(r))return[!1,"身份证号格式错误"];if(!{11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江 ",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北 ",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏 ",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外 "}[r.slice(0,2)])return[!1,"地址编码错误"];if(18==r.length){for(var e=r.split(""),f=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2],c=0,l=0;l<17;l++)c+=+e[l]*f[l];[1,0,"X",9,8,7,6,5,4,3,2][c%11]!=e[17]&&(t="校验位错误,结尾是字母请注意大小写",n=!1)}return[n,t]},r.isArray=function(r){return Array.isArray?Array.isArray(r):"array"===t(r)},r.isBoolean=e,r.isChinesePhone=function(r){return/^1[3-9]\d{9}$/.test(r)},r.isDate=function(r){return"date"===t(r)},r.isEmpty=function(r){if(a(r))return!0;if(Array.isArray(r))return 0===r.length;if(i(r))return!0;if(n(r)){for(var t in r)if(r.hasOwnProperty(t))return!1;return!0}return!1},r.isEmptyStr=a,r.isEqualArray=function(r,t){if(r.length!==t.length)return!1;for(var n=0;n<r.length;n++)if(r[n]!==t[n])return!1;return!0},r.isError=function(r){return"error"===t(r)||r instanceof Error},r.isFalsy=function(r){return!r},r.isFalsyNon0=function(r){return!r&&0!==r},r.isFunction=f,r.isHttpUrl=function(r){var t;try{t=new URL(r)}catch(r){return!1}return"http:"===t.protocol||"https:"===t.protocol},r.isNull=function(r){return null===r},r.isNullish=i,r.isNumber=o,r.isNumerical=function(r){return"number"==typeof r?0*r==0:"bigint"==typeof r||!(!u(r)||""===r.trim())&&(Number.isFinite?Number.isFinite(+r):isFinite(+r))},r.isObject=n,r.isPrimitive=function(r){return null===r||"boolean"==typeof r||"number"==typeof r||"bigint"==typeof r||"string"==typeof r||"symbol"==typeof r||void 0===r},r.isRegExp=function(r){return"regexp"===t(r)},r.isString=u,r.isSymbol=function(r){return"symbol"==typeof r},r.isTruthy=function(r){return!!r},r.isUndefined=function(r){return void 0===r},r.modulo=function(r,t){return(r%t+t)%t},r.normalizeMoney=function(r){if(!o(r)&&!u(r)||""===r)return"0";if(r=r.toString(),/[^0-9\.]/.test(r))return"0";if(0==+r)return"0.00";r=(r=((r=r.replace(/^(\d*)$/,"$1."))+"00").replace(/(\d*\.\d\d)\d*/,"$1")).replace(".",",");for(var t=/(\d)(\d{3},)/;t.test(r);)r=r.replace(t,"$1,$2");return r.replace(/,(\d\d)$/,".$1")},r.randomNum=function(r){void 0===r&&(r=6);for(var t=[],n="",e=0;e<r;e++)t[e]=0===e?+"1234566789"[Math.ceil(9*Math.random())]:Number.parseInt(10*Math.random()+""),n+=String(t[e]);return Number.parseInt(n)},r.randomStr=function(r,t,n){if(void 0===r&&(r=7),void 0===t&&(t=36),void 0===n&&(n=!0),!o(+r)||!o(+t)||!e(n))return"min, max should be number, startLetter should be boolean";if(+r<0||+t<0)return"min, max should be positive number";if(r>t)return"min should be less than max";r=+r,t=+t;for(var i="0123456789",u="abcdefghijklmnopqrstuvwxyz",a="ABCDEFGHIJKLMNOPQRSTUVWXYZ",f=i+u+a,c=u+a,l="",s=Math.floor(Math.random()*(t-r))+r,d=0;d<s;d++)l+=f[Math.floor(62*Math.random())];return n&&/^[0-9]/.test(l)&&(l=c[Math.floor(52*Math.random())]+l.slice(1)),!n&&/^[a-zA-Z]/.test(l)&&(l=i[Math.floor(10*Math.random())]+l.slice(1)),l},r.remainder=function(r,t){return r-t*Math.trunc(r/t)},r.removeRepeat=function(r){return Array.isArray(r)?Array.from(new Set(r)):[]},r.repeatRun=function(r,t,n){var e=void 0===t?{}:t,i=e.interval,u=void 0===i?1e3:i,a=e.immediate,c=void 0!==a&&a;if(!f(r))throw new Error("first argument must be a function");if(!o(u)||u<=0)throw new Error("interval must be a positive number");var l,s=function(){d=!0,clearTimeout(m),clearTimeout(l)},d=!1,p=0;c&&(++p,r(p,s,n));var m=setTimeout(function t(){d||(++p,r(p,s,n),l=setTimeout(t,u))},u);return s},r.throttle=function(r,t,n){void 0===t&&(t=200),void 0===n&&(n=!1);var e=Date.now(),i=null,o=!1;return function(){var u=[].slice.call(arguments),a=Date.now();n&&!o&&(r.apply(void 0,u),e=a,o=!0),clearTimeout(i),a-e>=t?(r.apply(void 0,u),e=a):i=setTimeout(function(){r.apply(void 0,u),e=Date.now()},t-(a-e))}},r.type=t,r.uuid=function(){var r=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){var n=(r+16*Math.random())%16|0;return r=Math.floor(r/16),("x"===t?n:7&n|8).toString(16)})}});
//# sourceMappingURL=index.umd.js.map