petite-utils
Version:
A collection of small util function in JavaScript.
3 lines (2 loc) • 6.61 kB
JavaScript
function r(r){return Object.prototype.toString.call(r).slice(8,-1).toLowerCase()}function t(r){return"object"==typeof r&&null!==r}function e(r){return"boolean"==typeof r}function n(r){return null==r}function o(r){return"number"==typeof r?0*r==0:"bigint"==typeof r}function i(r){return"string"==typeof r}function u(r){return""===r}function a(t){return!n(t)&&!!t&&("function"===r(t)||"function"==typeof t||t instanceof Function)}var s=function(t){var e,n=r(t);if(!["object","array"].includes(n))return t;if("array"===n){e=[];for(var o=0,i=t.length;o<i;)e[o]=s(t[o]),o++}else if("object"===n)for(var u in e={},t)Object.prototype.hasOwnProperty.call(t,u)&&(e[u]=s(t[u]));return e};exports.chunk=function(r,t){if(!Array.isArray(r))throw new Error("第一个参数必须是一个一维数组");if(!o(t))throw new Error("第二个参数必须是一个数字");for(var e=[],n=0;n<r.length;n+=t)e.push(r.slice(n,n+t));return e},exports.clone=s,exports.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 e=document.createElement("textArea");e.value=r,e.style.width="0px",e.style.position="fixed",e.style.left="-999px",e.style.top="10px",e.setAttribute("readonly","readonly"),document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e),t(!0)})},exports.debounce=function(r,t,e){var n;return void 0===t&&(t=200),void 0===e&&(e=!1),function(){var o=[].slice.call(arguments);e&&!n&&r.apply(void 0,o),n&&clearTimeout(n),n=setTimeout(function(){r.apply(void 0,o)},t)}},exports.identityCodeValid=function(r){if(n(r)||u(r))return[!1,"身份证号不能为空"];if(!o(r)&&!i(r))return[!1,"身份证号必须是数字或者字符串"];var t="",e=!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 a=r.split(""),s=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2],f=0,c=0;c<17;c++)f+=+a[c]*s[c];[1,0,"X",9,8,7,6,5,4,3,2][f%11]!=a[17]&&(t="校验位错误,结尾是字母请注意大小写",e=!1)}return[e,t]},exports.isArray=function(t){return Array.isArray?Array.isArray(t):"array"===r(t)},exports.isBoolean=e,exports.isChinesePhone=function(r){return/^1[3-9]\d{9}$/.test(r)},exports.isDate=function(t){return"date"===r(t)},exports.isEmpty=function(r){if(u(r))return!0;if(Array.isArray(r))return 0===r.length;if(n(r))return!0;if(t(r)){for(var e in r)if(r.hasOwnProperty(e))return!1;return!0}return!1},exports.isEmptyStr=u,exports.isEqualArray=function(r,t){if(r.length!==t.length)return!1;for(var e=0;e<r.length;e++)if(r[e]!==t[e])return!1;return!0},exports.isError=function(t){return"error"===r(t)||t instanceof Error},exports.isFalsy=function(r){return!r},exports.isFalsyNon0=function(r){return!r&&0!==r},exports.isFunction=a,exports.isHttpUrl=function(r){var t;try{t=new URL(r)}catch(r){return!1}return"http:"===t.protocol||"https:"===t.protocol},exports.isNull=function(r){return null===r},exports.isNullish=n,exports.isNumber=o,exports.isNumerical=function(r){return"number"==typeof r?0*r==0:"bigint"==typeof r||!(!i(r)||""===r.trim())&&(Number.isFinite?Number.isFinite(+r):isFinite(+r))},exports.isObject=t,exports.isPrimitive=function(r){return null===r||"boolean"==typeof r||"number"==typeof r||"bigint"==typeof r||"string"==typeof r||"symbol"==typeof r||void 0===r},exports.isRegExp=function(t){return"regexp"===r(t)},exports.isString=i,exports.isSymbol=function(r){return"symbol"==typeof r},exports.isTruthy=function(r){return!!r},exports.isUndefined=function(r){return void 0===r},exports.modulo=function(r,t){return(r%t+t)%t},exports.normalizeMoney=function(r){if(!o(r)&&!i(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")},exports.randomNum=function(r){void 0===r&&(r=6);for(var t=[],e="",n=0;n<r;n++)t[n]=0===n?+"1234566789"[Math.ceil(9*Math.random())]:Number.parseInt(10*Math.random()+""),e+=String(t[n]);return Number.parseInt(e)},exports.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",s=i+u+a,f=u+a,c="",l=Math.floor(Math.random()*(t-r))+r,p=0;p<l;p++)c+=s[Math.floor(62*Math.random())];return n&&/^[0-9]/.test(c)&&(c=f[Math.floor(52*Math.random())]+c.slice(1)),!n&&/^[a-zA-Z]/.test(c)&&(c=i[Math.floor(10*Math.random())]+c.slice(1)),c},exports.remainder=function(r,t){return r-t*Math.trunc(r/t)},exports.removeRepeat=function(r){return Array.isArray(r)?Array.from(new Set(r)):[]},exports.repeatRun=function(r,t,e){var n=void 0===t?{}:t,i=n.interval,u=void 0===i?1e3:i,s=n.immediate,f=void 0!==s&&s;if(!a(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 c,l=function(){p=!0,clearTimeout(d),clearTimeout(c)},p=!1,x=0;f&&(++x,r(x,l,e));var d=setTimeout(function t(){p||(++x,r(x,l,e),c=setTimeout(t,u))},u);return l},exports.throttle=function(r,t,e){void 0===t&&(t=200),void 0===e&&(e=!1);var n=Date.now(),o=null,i=!1;return function(){var u=[].slice.call(arguments),a=Date.now();e&&!i&&(r.apply(void 0,u),n=a,i=!0),clearTimeout(o),a-n>=t?(r.apply(void 0,u),n=a):o=setTimeout(function(){r.apply(void 0,u),n=Date.now()},t-(a-n))}},exports.type=r,exports.uuid=function(){var r=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){var e=(r+16*Math.random())%16|0;return r=Math.floor(r/16),("x"===t?e:7&e|8).toString(16)})};
//# sourceMappingURL=index.cjs.map