Comparing version
/** | ||
* xe-utils.js v1.5.26 | ||
* xe-utils.js v1.5.27 | ||
* (c) 2017-2018 Xu Liangzhan | ||
@@ -16,3 +16,3 @@ * ISC License. | ||
XEUtils.version = '1.5.26' | ||
XEUtils.version = '1.5.27' | ||
@@ -240,3 +240,4 @@ /** | ||
/** | ||
* 求和函数,将数值相加 | ||
* 求和函数,将数值相加 | ||
* | ||
* @param {Array} array 数组 | ||
@@ -246,3 +247,3 @@ * @param {Function/String} iteratee 方法或属性 | ||
* @return {Number} | ||
*/ | ||
*/ | ||
function arraySum (array, iteratee, context) { | ||
@@ -262,2 +263,24 @@ var result = 0 | ||
/** | ||
* 接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始合并,最终为一个值。 | ||
* | ||
* @param {Array} array 数组 | ||
* @param {Function} callback 方法 | ||
* @param {Object} initialValue 初始值 | ||
* @return {Number} | ||
*/ | ||
function arrayReduce (array, callback, initialValue) { | ||
var previous = initialValue | ||
var index = 0 | ||
var len = array.length | ||
if (typeof initialValue === 'undefined') { | ||
previous = array[0] | ||
index = 1 | ||
} | ||
for (; index < len; index++) { | ||
previous = callback.call(global, previous, array[index], index, array) | ||
} | ||
return previous | ||
} | ||
var arrayExports = { | ||
@@ -285,3 +308,5 @@ arrayUniq: arrayUniq, | ||
arraySum: arraySum, | ||
sum: sum | ||
sum: sum, | ||
arrayReduce: arrayReduce, | ||
reduce: arrayReduce | ||
} | ||
@@ -294,7 +319,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
var isArray = Array.isArray || function (val) { | ||
return objectToString.call(val) === '[object Array]' | ||
var isArray = Array.isArray || function (obj) { | ||
return objectToString.call(obj) === '[object Array]' | ||
} | ||
@@ -305,7 +330,7 @@ | ||
* | ||
* @param {Number} val 数值 | ||
* @param {Number} obj 数值 | ||
* @return {Boolean} | ||
*/ | ||
function isFloat (val) { | ||
return val !== null && !isNaN(val) && !isInteger(val) | ||
function isFloat (obj) { | ||
return obj !== null && !isNaN(obj) && !isInteger(obj) | ||
} | ||
@@ -324,7 +349,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isFunction (val) { | ||
return typeof val === 'function' | ||
function isFunction (obj) { | ||
return typeof obj === 'function' | ||
} | ||
@@ -335,7 +360,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isBoolean (val) { | ||
return typeof val === 'boolean' | ||
function isBoolean (obj) { | ||
return typeof obj === 'boolean' | ||
} | ||
@@ -346,7 +371,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isString (val) { | ||
return typeof val === 'string' | ||
function isString (obj) { | ||
return typeof obj === 'string' | ||
} | ||
@@ -357,7 +382,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isNumber (val) { | ||
return typeof val === 'number' | ||
function isNumber (obj) { | ||
return typeof obj === 'number' | ||
} | ||
@@ -368,7 +393,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isRegExp (val) { | ||
return objectToString.call(val) === '[object RegExp]' | ||
function isRegExp (obj) { | ||
return objectToString.call(obj) === '[object RegExp]' | ||
} | ||
@@ -379,7 +404,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isObject (val) { | ||
return typeof val === 'object' | ||
function isObject (obj) { | ||
return typeof obj === 'object' | ||
} | ||
@@ -390,7 +415,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isPlainObject (val) { | ||
return val ? val.constructor === Object : false | ||
function isPlainObject (obj) { | ||
return obj ? obj.constructor === Object : false | ||
} | ||
@@ -401,7 +426,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isDate (val) { | ||
return objectToString.call(val) === '[object Date]' | ||
function isDate (obj) { | ||
return objectToString.call(obj) === '[object Date]' | ||
} | ||
@@ -412,7 +437,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isError (val) { | ||
return objectToString.call(val) === '[object Error]' | ||
function isError (obj) { | ||
return objectToString.call(obj) === '[object Error]' | ||
} | ||
@@ -423,7 +448,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isTypeError (val) { | ||
return val ? val.constructor === TypeError : false | ||
function isTypeError (obj) { | ||
return obj ? obj.constructor === TypeError : false | ||
} | ||
@@ -434,8 +459,8 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isEmpty (val) { | ||
if (val === 0 || !isNumber(val)) { | ||
for (var key in val) { | ||
function isEmpty (obj) { | ||
if (obj === 0 || !isNumber(obj)) { | ||
for (var key in obj) { | ||
return false | ||
@@ -451,7 +476,7 @@ } | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isNull (val) { | ||
return val === null | ||
function isNull (obj) { | ||
return obj === null | ||
} | ||
@@ -462,7 +487,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isSymbol (val) { | ||
return typeof Symbol !== 'undefined' && Symbol.isSymbol ? Symbol.isSymbol(val) : (typeof val === 'symbol') | ||
function isSymbol (obj) { | ||
return typeof Symbol !== 'undefined' && Symbol.isSymbol ? Symbol.isSymbol(obj) : (typeof obj === 'symbol') | ||
} | ||
@@ -473,7 +498,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isArguments (val) { | ||
return objectToString.call(val) === '[object Arguments]' | ||
function isArguments (obj) { | ||
return objectToString.call(obj) === '[object Arguments]' | ||
} | ||
@@ -484,7 +509,7 @@ | ||
* | ||
* @param {Number} num 数值 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isElement (val) { | ||
return val && isString(val.nodeName) && isNumber(val.nodeType) | ||
function isElement (obj) { | ||
return obj && isString(obj.nodeName) && isNumber(obj.nodeType) | ||
} | ||
@@ -495,7 +520,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isDocument (val) { | ||
return val && val.nodeType === 9 && typeof document !== 'undefined' | ||
function isDocument (obj) { | ||
return obj && obj.nodeType === 9 && typeof document !== 'undefined' | ||
} | ||
@@ -506,7 +531,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isWindow (val) { | ||
return val && val === val.window && typeof window !== 'undefined' | ||
function isWindow (obj) { | ||
return obj && obj === obj.window && typeof window !== 'undefined' | ||
} | ||
@@ -517,10 +542,50 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isFormData (val) { | ||
return typeof FormData !== 'undefined' && val instanceof FormData | ||
function isFormData (obj) { | ||
return typeof FormData !== 'undefined' && obj instanceof FormData | ||
} | ||
/** | ||
* 判断是否Map对象 | ||
* | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isMap (obj) { | ||
return typeof Map !== 'undefined' && obj instanceof Map | ||
} | ||
/** | ||
* 判断是否WeakMap对象 | ||
* | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isWeakMap (obj) { | ||
return typeof WeakMap !== 'undefined' && obj instanceof WeakMap | ||
} | ||
/** | ||
* 判断是否Set对象 | ||
* | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isSet (obj) { | ||
return typeof Set !== 'undefined' && obj instanceof Set | ||
} | ||
/** | ||
* 判断是否WeakSet对象 | ||
* | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isWeakSet (obj) { | ||
return typeof WeakSet !== 'undefined' && obj instanceof WeakSet | ||
} | ||
/** | ||
* 判断是否闰年 | ||
@@ -935,2 +1000,6 @@ * | ||
isFormData: isFormData, | ||
isMap: isMap, | ||
isWeakMap: isWeakMap, | ||
isSet: isSet, | ||
isWeakSet: isWeakSet, | ||
isLeapYear: isLeapYear, | ||
@@ -1146,3 +1215,3 @@ getType: getType, | ||
} | ||
if (!isNaN(str)) { | ||
if (/^[0-9]{11,13}$/.test(str)) { | ||
return new Date(str) | ||
@@ -1494,2 +1563,3 @@ } | ||
* @param { String/Number } str 数值 | ||
* @return {Number} | ||
*/ | ||
@@ -1504,2 +1574,11 @@ function stringToNumber (str) { | ||
/** | ||
* 转整数 | ||
* @param { String/Number } str 数值 | ||
* @return {Number} | ||
*/ | ||
function stringToInteger (str) { | ||
return parseInt(stringToNumber(str)) | ||
} | ||
var numberExports = { | ||
@@ -1513,5 +1592,37 @@ getRandom: getRandom, | ||
toNumber: stringToNumber, | ||
stringToNumber: stringToNumber | ||
stringToNumber: stringToNumber, | ||
toInteger: stringToInteger, | ||
stringToInteger: stringToInteger | ||
} | ||
/** | ||
* 去除字符串左右两边的空格 | ||
* | ||
* @param {String} str 字符串 | ||
* @return {String} | ||
*/ | ||
function stringTrim (str) { | ||
return str && str.trim ? str.trim() : stringTrimRight(stringTrimLeft(str)) | ||
} | ||
/** | ||
* 去除字符串左边的空格 | ||
* | ||
* @param {String} str 字符串 | ||
* @return {String} | ||
*/ | ||
function stringTrimLeft (str) { | ||
return str && str.trimLeft ? str.trimLeft() : ('' + str).replace(/^[\s\uFEFF\xA0]+/g, '') | ||
} | ||
/** | ||
* 去除字符串右边的空格 | ||
* | ||
* @param {String} str 字符串 | ||
* @return {String} | ||
*/ | ||
function stringTrimRight (str) { | ||
return str && str.trimRight ? str.trimRight() : ('' + str).replace(/[\s\uFEFF\xA0]+$/g, '') | ||
} | ||
var escapeMap = { | ||
@@ -1534,3 +1645,3 @@ '&': '&', | ||
return function (str) { | ||
return String(str || '').replace(replaceRegexp, function (match) { | ||
return ('' + str).replace(replaceRegexp, function (match) { | ||
return dataMap[match] | ||
@@ -1557,5 +1668,133 @@ }) | ||
/** | ||
* 将带字符串转成驼峰字符串,例如 project-name => projectName | ||
* | ||
* @param {String} str 字符串 | ||
* @return {String} | ||
*/ | ||
function camelCase (str) { | ||
return ('' + str).replace(/(-[a-zA-Z])/g, function (text, u) { return u.substring(1).toLocaleUpperCase() }) | ||
} | ||
/** | ||
* 将带驼峰字符串转成字符串,例如 projectName => project-name | ||
* | ||
* @param {String} str 字符串 | ||
* @return {String} | ||
*/ | ||
function kebabCase (str) { | ||
return ('' + str).replace(/([A-Z])/g, function (text, u) { return '-' + u.toLowerCase() }) | ||
} | ||
/** | ||
* 将字符串重复 n次 | ||
* | ||
* @param {String} str 字符串 | ||
* @param {Number} count 次数 | ||
* @return {String} | ||
*/ | ||
function stringRepeat (str, count) { | ||
var rest = '' + str | ||
if (str.repeat) { | ||
return str.repeat(count) | ||
} | ||
var list = isNaN(count) ? [] : new Array(parseInt(count)) | ||
return list.join(rest) + (list.length > 0 ? rest : '') | ||
} | ||
/** | ||
* 用指定字符从前面开始补全字符串 | ||
* | ||
* @param {String} str 字符串 | ||
* @param {Number} targetLength 结果长度 | ||
* @param {Number} padString 补全字符 | ||
* @return {String} | ||
*/ | ||
function stringPadStart (str, targetLength, padString) { | ||
var rest = '' + str | ||
if (rest.padStart) { | ||
return rest.padStart(targetLength, padString) | ||
} | ||
if ((targetLength >> 0) > rest.length) { | ||
padString = String(padString || ' ') | ||
targetLength -= rest.length | ||
if (targetLength > padString.length) { | ||
padString += stringRepeat(padString, targetLength / padString.length) | ||
} | ||
return padString.slice(0, targetLength) + rest | ||
} | ||
return rest | ||
} | ||
/** | ||
* 用指定字符从后面开始补全字符串 | ||
* | ||
* @param {String} str 字符串 | ||
* @param {Number} targetLength 结果长度 | ||
* @param {Number} padString 补全字符 | ||
* @return {String} | ||
*/ | ||
function stringPadEnd (str, targetLength, padString) { | ||
var rest = '' + str | ||
if (rest.padEnd) { | ||
return rest.padEnd(targetLength, padString) | ||
} | ||
if ((targetLength >> 0) > rest.length) { | ||
padString = String(padString || ' ') | ||
targetLength -= rest.length | ||
if (targetLength > padString.length) { | ||
padString += stringRepeat(padString, targetLength / padString.length) | ||
} | ||
return rest + padString.slice(0, targetLength) | ||
} | ||
return rest | ||
} | ||
/** | ||
* 判断字符串是否在源字符串的头部 | ||
* | ||
* @param {String} str 字符串 | ||
* @param {String/Number} val 值 | ||
* @param {Number} startIndex 开始索引 | ||
* @return {String} | ||
*/ | ||
function stringStartsWith (str, val, startIndex) { | ||
var rest = '' + str | ||
return (arguments.length === 1 ? rest : rest.substring(startIndex)).indexOf(val) === 0 | ||
} | ||
/** | ||
* 判断字符串是否在源字符串的尾部 | ||
* | ||
* @param {String} str 字符串 | ||
* @param {String/Number} val 值 | ||
* @param {Number} startIndex 开始索引 | ||
* @return {String} | ||
*/ | ||
function stringEndsWith (str, val, startIndex) { | ||
var rest = '' + str | ||
return arguments.length === 1 ? rest.indexOf(val) === rest.length - 1 : rest.substring(0, startIndex).indexOf(val) === startIndex - 1 | ||
} | ||
var stringExports = { | ||
trim: stringTrim, | ||
stringTrim: stringTrim, | ||
trimLeft: stringTrimLeft, | ||
stringTrimLeft: stringTrimLeft, | ||
trimRight: stringTrimRight, | ||
stringTrimRight: stringTrimRight, | ||
escape: escape, | ||
unescape: unescape | ||
unescape: unescape, | ||
camelCase: camelCase, | ||
kebabCase: kebabCase, | ||
repeat: stringRepeat, | ||
stringRepeat: stringRepeat, | ||
padStart: stringPadStart, | ||
stringPadStart: stringPadStart, | ||
padEnd: stringPadEnd, | ||
stringPadEnd: stringPadEnd, | ||
startsWith: stringStartsWith, | ||
stringStartsWith: stringStartsWith, | ||
endsWith: stringEndsWith, | ||
stringEndsWith: stringEndsWith | ||
} | ||
@@ -1562,0 +1801,0 @@ |
/** | ||
* xe-utils.js v1.5.26 | ||
* xe-utils.js v1.5.27 | ||
* (c) 2017-2018 Xu Liangzhan | ||
@@ -7,2 +7,2 @@ * ISC License. | ||
*/ | ||
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):e.XEUtils=n()}(this,function(){"use strict";function e(){}function n(e){var n=[];return oe.isArray(e)&&oe.arrayEach(e,function(e){n.includes(e)||n.push(e)}),n}function t(){for(var e=[],t=0,r=arguments.length;t<r;t++)e=e.concat(arguments[t]);return n(e)}function r(e,n,t){return oe.isArray(e)?e.sort(n?oe.isFunction(n)?n.bind(t||this):function(e,t){return e[n]>t[n]?1:-1}:function(e,n){return e>n?1:-1}):e}function i(e){for(var n=[],t=oe.objectValues(e),r=t.length-1;r>=0;r--){var i=r>0?de.getRandom(0,r):0;n.push(t[i]),t.splice(i,1)}return n}function o(e,n){var t=i(e);return 1===arguments.length?t[0]:(n<t.length&&(t.length=n||0),t)}function a(e,n,t){if(e){if(t=t||this,oe.isArray(e))return e.some(n,t);for(var r in e)if(e.hasOwnProperty(r)&&n.call(t,e[r],r,e))return!0}return!1}function u(e,n,t){if(e){if(t=t||this,oe.isArray(e))return e.every(n,t);for(var r in e)if(e.hasOwnProperty(r)&&!n.call(t,e[r],r,e))return!1}return!0}function s(e,n,t){if(e){if(t=t||this,oe.isArray(e))return e.filter(n,t);var r={};return oe.each(e,function(i,o){n.call(t,i,o,e)&&(r[o]=i)}),r}return[]}function c(e,n,t){if(e){if(t=t||this,oe.isArray(e))return e.find(n,t);for(var r in e)if(e.hasOwnProperty(r)&&n.call(t,e[r],r,e))return e[r]}}function f(e,n,t){var r=[];if(e){if(t=t||this,oe.isArray(e))return e.map(n,t);oe.each(e,function(){r.push(n.apply(t,arguments))})}return r}function l(e,n,t){var r=0;return t=t||this,oe.each(e,n?oe.isFunction(n)?function(){r+=n.apply(t,arguments)}:function(e,t){r+=e[n]}:function(e,n){r+=e}),r}function h(e){return"function"==typeof e}function y(e){return"string"==typeof e}function p(e){return"number"==typeof e}function g(e){return"object"==typeof e}function d(e){return!!e&&e.constructor===Object}function m(e){return"[object Date]"===K.call(e)}function v(e){return"undefined"!=typeof Symbol&&Symbol.isSymbol?Symbol.isSymbol(e):"symbol"==typeof e}function b(e){return function(n,t){if(n){if(y(n)||L(n))return e(n,t);for(var r in n)if(t===n[r])return r}return-1}}function S(e,n){return-1!==X(e,n)}function M(e,n,t){for(var r,i=1,o=n.length;i<o;i++)r=n[i],E(j(n[i]),function(n){e[n]=t?A(r[n],t):r[n]});return e}function j(e){var n=[];if(e){if(Object.keys)return Object.keys(e);N(e,function(e,t){n.push(t)})}return n}function x(e){if(Object.values)return e?Object.values(e):[];var n=[];return E(j(e),function(t){n.push(e[t])}),n}function D(e){if(Object.entries)return e?Object.entries(e):[];var n=[];return E(j(e),function(t){n.push([t,e[t]])}),n}function O(e){return x(e)[0]}function w(e){var n=x(e);return n[n.length-1]}function N(e,n,t){for(var r in e)e.hasOwnProperty(r)&&n.call(t||this,e[r],r,e)}function E(e,n,t){for(var r=0,i=e.length||0;r<i;r++)n.call(t||this,e[r],r,e)}function F(e,n,t){return e?L(e)?h(e.forEach)?e.forEach(n,t||this):E(e,n,t||this):N(e,n,t||this):e}function T(n){return d(n)?function(e){var n={};return F(e,function(e,t){n[t]=T(e)}),n}(n):L(n)?function(n){return e.arrayMap(n,T)}(n):n}function A(e,n){return e?n?T(e):_(d(e)?{}:[],e):e}function I(e,n){var t=parseFloat(n),r=new Date,i=r.getTime();switch(e){case"y":return ye.getWhatYear(r,t).getTime();case"M":return ye.getWhatMonth(r,t).getTime();case"d":return ye.getWhatDay(r,t).getTime();case"H":return i+60*t*60*1e3;case"m":return i+60*t*1e3;case"s":return i+1e3*t}return i}function H(e){return(oe.isDate(e)?e:new Date(e)).toUTCString()}function k(e,n,t){var r=[],i="undefined"!=typeof document;if(this&&this.$context&&(this.$context=null),oe.isArray(e)?r=e:arguments.length>1?r=[oe.objectAssign({name:e,value:n},t)]:oe.isObject(e)&&(r=[e]),!(r.length>0)){var o={};return i&&document.cookie&&oe.arrayEach(document.cookie.split("; "),function(e){var n=e.indexOf("=");o[ue(e.substring(0,n))]=ue(e.substring(n+1)||"")}),1===arguments.length?o[e]:o}i&&oe.arrayEach(r,function(e){var n=oe.objectAssign({},e),t=[];if(n.name){var r=n.expires;t.push(se(n.name)+"="+se(oe.isObject(n.value)?JSON.stringify(n.value):n.value)),r&&(isNaN(r)?n.expires=r.replace(/^([0-9]+)(y|M|d|H|m|s)$/,function(e,n,t){return H(I(t,n))}):/^[0-9]{11,13}$/.test(r)||oe.isDate(r)?n.expires=H(r):n.expires=H(I("d",r))),oe.arrayEach(["expires","path","domain","secure"],function(e){void 0!==n[e]&&t.push(n[e]&&"secure"===e?e:e+"="+n[e])})}document.cookie=t.join("; ")})}function P(e,n){if(e){if(oe.isDate(e))return e;if(!isNaN(e))return new Date(e);if(oe.isString(e)){n=n||"yyyy-MM-dd HH:mm:ss.SSS";var t=[];return oe.arrayEach(le,function(r){for(var i,o,a=0,u=r.rules,s=u.length;a<s;a++){if(i=u[a],(o=n.indexOf(i[0]))>-1){t.push(parseFloat(e.substring(o,o+i[1])||0)+(r.offset||0));break}a===s-1&&t.push(0)}}),new Date(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}}return"Invalid Date"}function R(e,n,t){var r=P(e),i=n&&!isNaN(n)?n:0,o=r.getHours(),a=r.getMinutes(),u=r.getSeconds(),s=r.getMilliseconds();if("first"===t){var c=r.getFullYear(),f=r.getMonth();return(f+=i)<0?new Date(c-Math.ceil((f=Math.abs(f))/12),12-(f%12||1),1,o,a,u,s):new Date(c+Math.floor(f/12),f%12,1,o,a,u,s)}if("last"===t)return new Date(R(r,i+1,"first").getTime()-864e5);var l=r.getDate(),h=R(r,i,"first"),y=h.getMonth();for(h.setDate(l);y<h.getMonth();)h.setDate(--l);return h}function U(e){var n={},t=e.split("?")[1]||"";return t&&oe.arrayEach(t.split("&"),function(e){var t=e.split("=");n[decodeURIComponent(t[0])]=decodeURIComponent(t[1]||"")}),n}function W(){return pe?pe.origin||pe.protocol+"//"+pe.host:""}function Y(e){var n=""+e;0===n.indexOf("/")&&(n=W()+n);var t=n.replace(/#.*/,"").match(/(\?.*)/),r={href:n,hash:"",host:"",hostname:"",protocol:"",port:"",search:t?t[1]:""};r.path=n.replace(/^([a-z0-9.+-]*:)\/\//,function(e,n){return r.protocol=n,""}).replace(/^([a-z0-9.+-]*)(:\d+)?\//,function(e,n,t){var i=t||"";return r.port=i.replace(":",""),r.hostname=n,r.host=n+i,"/"}).replace(/(#.*)/,function(e,n){return r.hash=n,""});var i=r.hash.match(/#((.*)\?|(.*))/);return r.pathname=r.path.replace(/(\?|#.*).*/,""),r.origin=r.protocol+"//"+r.host,r.hashKey=i?i[2]||"":"",r.hashQuery=U(r.hash),r.searchQuery=U(r.search),r}function $(e,n){return oe.isFunction(n)?z.arraySort(z.arrayMap(e,n,this)):z.arraySort(e,n)}function C(){return $.apply(this,arguments)[0]}function q(){return $.apply(this,arguments).reverse()[0]}function J(e){if(e){var n=parseFloat(e);return isNaN(n)?0:n}return 0}function B(e){var n=new RegExp("(?:"+oe.objectKeys(e).join("|")+")","g");return function(t){return String(t||"").replace(n,function(n){return e[n]})}}e.version="1.5.26";var z={arrayUniq:n,uniq:n,arrayUnion:t,union:t,arraySort:r,sort:r,arrayShuffle:i,shuffle:i,arraySample:o,sample:o,arraySome:a,some:a,arrayEvery:u,every:u,arrayFilter:s,filter:s,arrayFind:c,find:c,arrayMap:f,map:f,arraySum:l,sum:l},K=Object.prototype.toString,L=Array.isArray||function(e){return"[object Array]"===K.call(e)},Q=Number.isInteger,V=0,X=b(function(e,n){if(e.indexOf)return e.indexOf(n);for(var t=0,r=e.length;t<r;t++)if(n===e[t])return t}),G=b(function(e,n){if(e.lastIndexOf)return e.lastIndexOf(n);for(var t=e.length-1;t>=0;t--)if(n===e[t])return t;return-1}),Z=S,_=function(e){if(e){var n=arguments;if(!0!==e)return Object.assign?Object.assign.apply(Object,n):M(e,n);if(n.length>1)return e=L(e[1])?[]:{},M(e,n,!0)}return e},ee=j,ne=x,te=D,re=O,ie=w,oe={isNaN:isNaN,isFinite:isFinite,isArray:L,isFloat:function(e){return null!==e&&!isNaN(e)&&!Q(e)},isInteger:Q,isFunction:h,isBoolean:function(e){return"boolean"==typeof e},isString:y,isNumber:p,isRegExp:function(e){return"[object RegExp]"===K.call(e)},isObject:g,isPlainObject:d,isDate:m,isError:function(e){return"[object Error]"===K.call(e)},isTypeError:function(e){return!!e&&e.constructor===TypeError},isEmpty:function(e){if(0===e||!p(e)){for(var n in e)return!1;return!0}return!1},isNull:function(e){return null===e},isSymbol:v,isArguments:function(e){return"[object Arguments]"===K.call(e)},isElement:function(e){return e&&y(e.nodeName)&&p(e.nodeType)},isDocument:function(e){return e&&9===e.nodeType&&"undefined"!=typeof document},isWindow:function(e){return e&&e===e.window&&"undefined"!=typeof window},isFormData:function(e){return"undefined"!=typeof FormData&&e instanceof FormData},isLeapYear:function(n){var t=(n?e.stringToDate(n):new Date).getFullYear();return t%4==0&&(t%100!=0||t%400==0)},getType:function(e){return null===e?""+e:v(e)?"symbol":m(e)?"date":L(e)?"array":typeof e},uniqueId:function(){return++V},getSize:function(e){var n=0;return y(e)||L(e)?e.length:(F(e,function(){n++}),n)},lastIndexOf:G,includes:S,contains:Z,objectAssign:_,assign:_,extend:_,stringToJson:function(e){if(g(e))return e;if(y(e))try{return JSON.parse(e)}catch(e){console.error(e)}return{}},jsonToString:function(e){if(g(e))try{return JSON.stringify(e)}catch(e){console.error(e)}return e?""+e:""},objectKeys:j,keys:ee,objectValues:x,values:ne,objectEntries:D,entries:te,arrayFirst:O,first:re,arrayLast:w,last:ie,objectEach:N,arrayEach:E,each:F,groupBy:function(e,n,t){var r,i,o={};return e&&(y(n)?(i=n,n=null):n=h(n)?n.bind(t||this):i=null,F(e,function(t,a){r=n?n(t,a,e):i?t[i]:t,o[r]?o[r].push(t):o[r]=[t]})),o},objectMap:function(e,n,t){var r={};return F(e,function(i,o){r[o]=n.call(t||this,i,o,e)}),r},clone:A},ae={browse:function(){var e={isNode:!1,isMobile:!1,isPC:!1};if("undefined"==typeof window&&"undefined"!=typeof process)e.nodeJS=!0;else if(e.isMobile=function(){for(var e=["Android","webOS","iPhone","iPad","iPod","SymbianOS","BlackBerry","Windows Phone"],n=navigator.userAgent,t=0;t<e.length;t++)if(n.indexOf(e[t])>0)return!0;return!1}(),e.isPC=!e.isMobile,"undefined"!=typeof document){var n=document.body||document.documentElement;oe.arrayEach(["webkit","khtml","moz","ms","o"],function(t){e["-"+t]=!!n[t+"MatchesSelector"]})}return e}},ue=decodeURIComponent,se=encodeURIComponent;oe.objectAssign(k,{setItem:function(e,n,t){k(e,n,t)},getItem:function(e){return k(e)},removeItem:function(e){k(e,null,{expires:-1})},getJSON:function(){return k()}});var ce={cookie:k},fe=Date.now||function(){return(new Date).getTime()},le=[{rules:[["yyyy",4],["yyy",3],["yy",2]]},{rules:[["MM",2],["M",1]],offset:-1},{rules:[["dd",2],["d",1]]},{rules:[["HH",2],["H",1]]},{rules:[["mm",2],["m",1]]},{rules:[["ss",2],["s",1]]},{rules:[["SSS",3],["SS",2],["S",1]]}],he=[["yyyy",31536e6],["MM",2592e6],["dd",864e5],["HH",36e5],["mm",6e4],["ss",1e3],["S",0]],ye={timestamp:fe,now:fe,stringToDate:P,dateToString:function(e,n){if(e){if(e=P(e),oe.isDate(e)){var t=["日","一","二","三","四","五","六"],r={"q+":Math.floor((e.getMonth()+3)/3),"M+":e.getMonth()+1,"E+":e.getDay(),"d+":e.getDate(),"H+":e.getHours(),"m+":e.getMinutes(),"s+":e.getSeconds(),S:e.getMilliseconds()},i=String(n||"yyyy-MM-dd HH:mm:ss").replace(/(y+)/,function(n){return(""+e.getFullYear()).substr(4-n.length)});for(var o in r)if(r.hasOwnProperty(o)){var a=""+r[o];i=i.replace(new RegExp("("+o+")"),function(e){return"q+"===o||"E+"===o?t[a]:1===e.length?a:("00"+a).substr(a.length)})}return i}return e}return""},getWhatYear:function(e,n){var t=P(e);if(n){var r=n&&!isNaN(n)?n:0;t.setFullYear(t.getFullYear()+r)}return t},getWhatMonth:R,getWhatWeek:function(e,n,t){var r=P(e),i=Number(/^[0-7]$/.test(t)?t:r.getDay()),o=r.getDay(),a=r.getTime()+864e5*((0===i?7:i)-(0===o?7:o));return n&&!isNaN(n)&&(a+=6048e5*n),new Date(a)},getWhatDay:function(e,n){var t=P(e);return n?new Date(t.getTime()+(n&&!isNaN(n)?864e5*n:0)):t},getDaysOfMonth:function(e,n){return Math.floor((R(e,n,"last").getTime()-R(e,n,"first").getTime())/864e5)+1},getDateDiff:function(e,n,t){var r={done:!1},i=P(e).getTime(),o=n?P(n).getTime():new Date;if(i<o){var a,u=o-i,s=t&&t.length>0?t:he;r.done=!0;for(var c=0,f=s.length;c<f;c++)u>=(a=s[c])[1]?c===f-1?r[a[0]]=u||0:(r[a[0]]=Math.floor(u/a[1]),u-=r[a[0]]*a[1]):r[a[0]]=0}return r}},pe=null;"undefined"!=typeof location&&(pe=location);var ge={parseUrl:Y,getBaseURL:function(){if(pe){var e=pe.pathname,n=oe.lastIndexOf(e,"/")+1;return W()+(n===e.length?e:e.substring(0,n))}return""},locat:function(){return pe?Y(pe.href):{}}},de={getRandom:function(e,n){return e>=n?e:(e>>=0)+Math.round(Math.random()*((n||9)-e))},arrayMin:C,min:C,arrayMax:q,max:q,commafy:function(e,n){var t=oe.objectAssign({spaceNumber:3,separator:",",fixed:0},n),r=parseFloat((""+e).replace(/,/g,"")||0).toFixed(t.fixed).split(".");return r[0].replace(new RegExp("(?=(?!(\\b))(\\d{"+t.spaceNumber+"})+$)","g"),t.separator)+(r[1]?"."+r[1]:"")},toNumber:J,stringToNumber:J},me={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},ve={};oe.arrayEach(oe.objectKeys(me),function(e){ve[me[e]]=e});var be={escape:B(me),unescape:B(ve)},Se={};return oe.objectAssign(Se,z,oe,ae,ce,ye,ge,de,be),e.mixin=function(n){Se.objectEach(n,function(n,t){e[t]=-1==="cookie".indexOf(t)&&Se.isFunction(n)?function(){var t=n.apply(e.$context,arguments);return e.$context=null,t}:n})},e.mixin(Se),e}); | ||
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):t.XEUtils=n()}(this,function(){"use strict";function t(){}function n(t){var n=[];return yt.isArray(t)&&yt.arrayEach(t,function(t){n.includes(t)||n.push(t)}),n}function e(){for(var t=[],e=0,r=arguments.length;e<r;e++)t=t.concat(arguments[e]);return n(t)}function r(t,n,e){return yt.isArray(t)?t.sort(n?yt.isFunction(n)?n.bind(e||this):function(t,e){return t[n]>e[n]?1:-1}:function(t,n){return t>n?1:-1}):t}function i(t){for(var n=[],e=yt.objectValues(t),r=e.length-1;r>=0;r--){var i=r>0?Et.getRandom(0,r):0;n.push(e[i]),e.splice(i,1)}return n}function a(t,n){var e=i(t);return 1===arguments.length?e[0]:(n<e.length&&(e.length=n||0),e)}function o(t,n,e){if(t){if(e=e||this,yt.isArray(t))return t.some(n,e);for(var r in t)if(t.hasOwnProperty(r)&&n.call(e,t[r],r,t))return!0}return!1}function u(t,n,e){if(t){if(e=e||this,yt.isArray(t))return t.every(n,e);for(var r in t)if(t.hasOwnProperty(r)&&!n.call(e,t[r],r,t))return!1}return!0}function s(t,n,e){if(t){if(e=e||this,yt.isArray(t))return t.filter(n,e);var r={};return yt.each(t,function(i,a){n.call(e,i,a,t)&&(r[a]=i)}),r}return[]}function c(t,n,e){if(t){if(e=e||this,yt.isArray(t))return t.find(n,e);for(var r in t)if(t.hasOwnProperty(r)&&n.call(e,t[r],r,t))return t[r]}}function f(t,n,e){var r=[];if(t){if(e=e||this,yt.isArray(t))return t.map(n,e);yt.each(t,function(){r.push(n.apply(e,arguments))})}return r}function l(t,n,e){var r=0;return e=e||this,yt.each(t,n?yt.isFunction(n)?function(){r+=n.apply(e,arguments)}:function(t,e){r+=t[n]}:function(t,n){r+=t}),r}function h(t,n,e){var r=e,i=0,a=t.length;for(void 0===e&&(r=t[0],i=1);i<a;i++)r=n.call(global,r,t[i],i,t);return r}function g(t){return"function"==typeof t}function p(t){return"string"==typeof t}function y(t){return"number"==typeof t}function d(t){return"object"==typeof t}function m(t){return!!t&&t.constructor===Object}function v(t){return"[object Date]"===et.call(t)}function b(t){return"undefined"!=typeof Symbol&&Symbol.isSymbol?Symbol.isSymbol(t):"symbol"==typeof t}function S(t){return function(n,e){if(n){if(p(n)||rt(n))return t(n,e);for(var r in n)if(e===n[r])return r}return-1}}function M(t,n){return-1!==ot(t,n)}function x(t,n,e){for(var r,i=1,a=n.length;i<a;i++)r=n[i],F(j(n[i]),function(n){t[n]=e?k(r[n],e):r[n]});return t}function j(t){var n=[];if(t){if(Object.keys)return Object.keys(t);N(t,function(t,e){n.push(e)})}return n}function O(t){if(Object.values)return t?Object.values(t):[];var n=[];return F(j(t),function(e){n.push(t[e])}),n}function D(t){if(Object.entries)return t?Object.entries(t):[];var n=[];return F(j(t),function(e){n.push([e,t[e]])}),n}function E(t){return O(t)[0]}function w(t){var n=O(t);return n[n.length-1]}function N(t,n,e){for(var r in t)t.hasOwnProperty(r)&&n.call(e||this,t[r],r,t)}function F(t,n,e){for(var r=0,i=t.length||0;r<i;r++)n.call(e||this,t[r],r,t)}function T(t,n,e){return t?rt(t)?g(t.forEach)?t.forEach(n,e||this):F(t,n,e||this):N(t,n,e||this):t}function A(n){return m(n)?function(t){var n={};return T(t,function(t,e){n[e]=A(t)}),n}(n):rt(n)?function(n){return t.arrayMap(n,A)}(n):n}function k(t,n){return t?n?A(t):ct(m(t)?{}:[],t):t}function W(t,n){var e=parseFloat(n),r=new Date,i=r.getTime();switch(t){case"y":return jt.getWhatYear(r,e).getTime();case"M":return jt.getWhatMonth(r,e).getTime();case"d":return jt.getWhatDay(r,e).getTime();case"H":return i+60*e*60*1e3;case"m":return i+60*e*1e3;case"s":return i+1e3*e}return i}function I(t){return(yt.isDate(t)?t:new Date(t)).toUTCString()}function R(t,n,e){var r=[],i="undefined"!=typeof document;if(this&&this.$context&&(this.$context=null),yt.isArray(t)?r=t:arguments.length>1?r=[yt.objectAssign({name:t,value:n},e)]:yt.isObject(t)&&(r=[t]),!(r.length>0)){var a={};return i&&document.cookie&&yt.arrayEach(document.cookie.split("; "),function(t){var n=t.indexOf("=");a[mt(t.substring(0,n))]=mt(t.substring(n+1)||"")}),1===arguments.length?a[t]:a}i&&yt.arrayEach(r,function(t){var n=yt.objectAssign({},t),e=[];if(n.name){var r=n.expires;e.push(vt(n.name)+"="+vt(yt.isObject(n.value)?JSON.stringify(n.value):n.value)),r&&(isNaN(r)?n.expires=r.replace(/^([0-9]+)(y|M|d|H|m|s)$/,function(t,n,e){return I(W(e,n))}):/^[0-9]{11,13}$/.test(r)||yt.isDate(r)?n.expires=I(r):n.expires=I(W("d",r))),yt.arrayEach(["expires","path","domain","secure"],function(t){void 0!==n[t]&&e.push(n[t]&&"secure"===t?t:t+"="+n[t])})}document.cookie=e.join("; ")})}function H(t,n){if(t){if(yt.isDate(t))return t;if(/^[0-9]{11,13}$/.test(t))return new Date(t);if(yt.isString(t)){n=n||"yyyy-MM-dd HH:mm:ss.SSS";var e=[];return yt.arrayEach(Mt,function(r){for(var i,a,o=0,u=r.rules,s=u.length;o<s;o++){if(i=u[o],(a=n.indexOf(i[0]))>-1){e.push(parseFloat(t.substring(a,a+i[1])||0)+(r.offset||0));break}o===s-1&&e.push(0)}}),new Date(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}}return"Invalid Date"}function P(t,n,e){var r=H(t),i=n&&!isNaN(n)?n:0,a=r.getHours(),o=r.getMinutes(),u=r.getSeconds(),s=r.getMilliseconds();if("first"===e){var c=r.getFullYear(),f=r.getMonth();return(f+=i)<0?new Date(c-Math.ceil((f=Math.abs(f))/12),12-(f%12||1),1,a,o,u,s):new Date(c+Math.floor(f/12),f%12,1,a,o,u,s)}if("last"===e)return new Date(P(r,i+1,"first").getTime()-864e5);var l=r.getDate(),h=P(r,i,"first"),g=h.getMonth();for(h.setDate(l);g<h.getMonth();)h.setDate(--l);return h}function C(t){var n={},e=t.split("?")[1]||"";return e&&yt.arrayEach(e.split("&"),function(t){var e=t.split("=");n[decodeURIComponent(e[0])]=decodeURIComponent(e[1]||"")}),n}function U(){return Ot?Ot.origin||Ot.protocol+"//"+Ot.host:""}function $(t){var n=""+t;0===n.indexOf("/")&&(n=U()+n);var e=n.replace(/#.*/,"").match(/(\?.*)/),r={href:n,hash:"",host:"",hostname:"",protocol:"",port:"",search:e?e[1]:""};r.path=n.replace(/^([a-z0-9.+-]*:)\/\//,function(t,n){return r.protocol=n,""}).replace(/^([a-z0-9.+-]*)(:\d+)?\//,function(t,n,e){var i=e||"";return r.port=i.replace(":",""),r.hostname=n,r.host=n+i,"/"}).replace(/(#.*)/,function(t,n){return r.hash=n,""});var i=r.hash.match(/#((.*)\?|(.*))/);return r.pathname=r.path.replace(/(\?|#.*).*/,""),r.origin=r.protocol+"//"+r.host,r.hashKey=i?i[2]||"":"",r.hashQuery=C(r.hash),r.searchQuery=C(r.search),r}function L(t,n){return yt.isFunction(n)?nt.arraySort(nt.arrayMap(t,n,this)):nt.arraySort(t,n)}function Y(){return L.apply(this,arguments)[0]}function q(){return L.apply(this,arguments).reverse()[0]}function J(t){if(t){var n=parseFloat(t);return isNaN(n)?0:n}return 0}function z(t){return parseInt(J(t))}function B(t){return t&&t.trim?t.trim():Q(K(t))}function K(t){return t&&t.trimLeft?t.trimLeft():(""+t).replace(/^[\s\uFEFF\xA0]+/g,"")}function Q(t){return t&&t.trimRight?t.trimRight():(""+t).replace(/[\s\uFEFF\xA0]+$/g,"")}function V(t){var n=new RegExp("(?:"+yt.objectKeys(t).join("|")+")","g");return function(e){return(""+e).replace(n,function(n){return t[n]})}}function Z(t,n){var e=""+t;if(t.repeat)return t.repeat(n);var r=isNaN(n)?[]:new Array(parseInt(n));return r.join(e)+(r.length>0?e:"")}function X(t,n,e){var r=""+t;return r.padStart?r.padStart(n,e):n>>0>r.length?(e=String(e||" "),(n-=r.length)>e.length&&(e+=Z(e,n/e.length)),e.slice(0,n)+r):r}function G(t,n,e){var r=""+t;return r.padEnd?r.padEnd(n,e):n>>0>r.length?(e=String(e||" "),(n-=r.length)>e.length&&(e+=Z(e,n/e.length)),r+e.slice(0,n)):r}function _(t,n,e){var r=""+t;return 0===(1===arguments.length?r:r.substring(e)).indexOf(n)}function tt(t,n,e){var r=""+t;return 1===arguments.length?r.indexOf(n)===r.length-1:r.substring(0,e).indexOf(n)===e-1}t.version="1.5.27";var nt={arrayUniq:n,uniq:n,arrayUnion:e,union:e,arraySort:r,sort:r,arrayShuffle:i,shuffle:i,arraySample:a,sample:a,arraySome:o,some:o,arrayEvery:u,every:u,arrayFilter:s,filter:s,arrayFind:c,find:c,arrayMap:f,map:f,arraySum:l,sum:l,arrayReduce:h,reduce:h},et=Object.prototype.toString,rt=Array.isArray||function(t){return"[object Array]"===et.call(t)},it=Number.isInteger,at=0,ot=S(function(t,n){if(t.indexOf)return t.indexOf(n);for(var e=0,r=t.length;e<r;e++)if(n===t[e])return e}),ut=S(function(t,n){if(t.lastIndexOf)return t.lastIndexOf(n);for(var e=t.length-1;e>=0;e--)if(n===t[e])return e;return-1}),st=M,ct=function(t){if(t){var n=arguments;if(!0!==t)return Object.assign?Object.assign.apply(Object,n):x(t,n);if(n.length>1)return t=rt(t[1])?[]:{},x(t,n,!0)}return t},ft=j,lt=O,ht=D,gt=E,pt=w,yt={isNaN:isNaN,isFinite:isFinite,isArray:rt,isFloat:function(t){return null!==t&&!isNaN(t)&&!it(t)},isInteger:it,isFunction:g,isBoolean:function(t){return"boolean"==typeof t},isString:p,isNumber:y,isRegExp:function(t){return"[object RegExp]"===et.call(t)},isObject:d,isPlainObject:m,isDate:v,isError:function(t){return"[object Error]"===et.call(t)},isTypeError:function(t){return!!t&&t.constructor===TypeError},isEmpty:function(t){if(0===t||!y(t)){for(var n in t)return!1;return!0}return!1},isNull:function(t){return null===t},isSymbol:b,isArguments:function(t){return"[object Arguments]"===et.call(t)},isElement:function(t){return t&&p(t.nodeName)&&y(t.nodeType)},isDocument:function(t){return t&&9===t.nodeType&&"undefined"!=typeof document},isWindow:function(t){return t&&t===t.window&&"undefined"!=typeof window},isFormData:function(t){return"undefined"!=typeof FormData&&t instanceof FormData},isMap:function(t){return"undefined"!=typeof Map&&t instanceof Map},isWeakMap:function(t){return"undefined"!=typeof WeakMap&&t instanceof WeakMap},isSet:function(t){return"undefined"!=typeof Set&&t instanceof Set},isWeakSet:function(t){return"undefined"!=typeof WeakSet&&t instanceof WeakSet},isLeapYear:function(n){var e=(n?t.stringToDate(n):new Date).getFullYear();return e%4==0&&(e%100!=0||e%400==0)},getType:function(t){return null===t?""+t:b(t)?"symbol":v(t)?"date":rt(t)?"array":typeof t},uniqueId:function(){return++at},getSize:function(t){var n=0;return p(t)||rt(t)?t.length:(T(t,function(){n++}),n)},lastIndexOf:ut,includes:M,contains:st,objectAssign:ct,assign:ct,extend:ct,stringToJson:function(t){if(d(t))return t;if(p(t))try{return JSON.parse(t)}catch(t){console.error(t)}return{}},jsonToString:function(t){if(d(t))try{return JSON.stringify(t)}catch(t){console.error(t)}return t?""+t:""},objectKeys:j,keys:ft,objectValues:O,values:lt,objectEntries:D,entries:ht,arrayFirst:E,first:gt,arrayLast:w,last:pt,objectEach:N,arrayEach:F,each:T,groupBy:function(t,n,e){var r,i,a={};return t&&(p(n)?(i=n,n=null):n=g(n)?n.bind(e||this):i=null,T(t,function(e,o){r=n?n(e,o,t):i?e[i]:e,a[r]?a[r].push(e):a[r]=[e]})),a},objectMap:function(t,n,e){var r={};return T(t,function(i,a){r[a]=n.call(e||this,i,a,t)}),r},clone:k},dt={browse:function(){var t={isNode:!1,isMobile:!1,isPC:!1};if("undefined"==typeof window&&"undefined"!=typeof process)t.nodeJS=!0;else if(t.isMobile=function(){for(var t=["Android","webOS","iPhone","iPad","iPod","SymbianOS","BlackBerry","Windows Phone"],n=navigator.userAgent,e=0;e<t.length;e++)if(n.indexOf(t[e])>0)return!0;return!1}(),t.isPC=!t.isMobile,"undefined"!=typeof document){var n=document.body||document.documentElement;yt.arrayEach(["webkit","khtml","moz","ms","o"],function(e){t["-"+e]=!!n[e+"MatchesSelector"]})}return t}},mt=decodeURIComponent,vt=encodeURIComponent;yt.objectAssign(R,{setItem:function(t,n,e){R(t,n,e)},getItem:function(t){return R(t)},removeItem:function(t){R(t,null,{expires:-1})},getJSON:function(){return R()}});var bt={cookie:R},St=Date.now||function(){return(new Date).getTime()},Mt=[{rules:[["yyyy",4],["yyy",3],["yy",2]]},{rules:[["MM",2],["M",1]],offset:-1},{rules:[["dd",2],["d",1]]},{rules:[["HH",2],["H",1]]},{rules:[["mm",2],["m",1]]},{rules:[["ss",2],["s",1]]},{rules:[["SSS",3],["SS",2],["S",1]]}],xt=[["yyyy",31536e6],["MM",2592e6],["dd",864e5],["HH",36e5],["mm",6e4],["ss",1e3],["S",0]],jt={timestamp:St,now:St,stringToDate:H,dateToString:function(t,n){if(t){if(t=H(t),yt.isDate(t)){var e=["日","一","二","三","四","五","六"],r={"q+":Math.floor((t.getMonth()+3)/3),"M+":t.getMonth()+1,"E+":t.getDay(),"d+":t.getDate(),"H+":t.getHours(),"m+":t.getMinutes(),"s+":t.getSeconds(),S:t.getMilliseconds()},i=String(n||"yyyy-MM-dd HH:mm:ss").replace(/(y+)/,function(n){return(""+t.getFullYear()).substr(4-n.length)});for(var a in r)if(r.hasOwnProperty(a)){var o=""+r[a];i=i.replace(new RegExp("("+a+")"),function(t){return"q+"===a||"E+"===a?e[o]:1===t.length?o:("00"+o).substr(o.length)})}return i}return t}return""},getWhatYear:function(t,n){var e=H(t);if(n){var r=n&&!isNaN(n)?n:0;e.setFullYear(e.getFullYear()+r)}return e},getWhatMonth:P,getWhatWeek:function(t,n,e){var r=H(t),i=Number(/^[0-7]$/.test(e)?e:r.getDay()),a=r.getDay(),o=r.getTime()+864e5*((0===i?7:i)-(0===a?7:a));return n&&!isNaN(n)&&(o+=6048e5*n),new Date(o)},getWhatDay:function(t,n){var e=H(t);return n?new Date(e.getTime()+(n&&!isNaN(n)?864e5*n:0)):e},getDaysOfMonth:function(t,n){return Math.floor((P(t,n,"last").getTime()-P(t,n,"first").getTime())/864e5)+1},getDateDiff:function(t,n,e){var r={done:!1},i=H(t).getTime(),a=n?H(n).getTime():new Date;if(i<a){var o,u=a-i,s=e&&e.length>0?e:xt;r.done=!0;for(var c=0,f=s.length;c<f;c++)u>=(o=s[c])[1]?c===f-1?r[o[0]]=u||0:(r[o[0]]=Math.floor(u/o[1]),u-=r[o[0]]*o[1]):r[o[0]]=0}return r}},Ot=null;"undefined"!=typeof location&&(Ot=location);var Dt={parseUrl:$,getBaseURL:function(){if(Ot){var t=Ot.pathname,n=yt.lastIndexOf(t,"/")+1;return U()+(n===t.length?t:t.substring(0,n))}return""},locat:function(){return Ot?$(Ot.href):{}}},Et={getRandom:function(t,n){return t>=n?t:(t>>=0)+Math.round(Math.random()*((n||9)-t))},arrayMin:Y,min:Y,arrayMax:q,max:q,commafy:function(t,n){var e=yt.objectAssign({spaceNumber:3,separator:",",fixed:0},n),r=parseFloat((""+t).replace(/,/g,"")||0).toFixed(e.fixed).split(".");return r[0].replace(new RegExp("(?=(?!(\\b))(\\d{"+e.spaceNumber+"})+$)","g"),e.separator)+(r[1]?"."+r[1]:"")},toNumber:J,stringToNumber:J,toInteger:z,stringToInteger:z},wt={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},Nt={};yt.arrayEach(yt.objectKeys(wt),function(t){Nt[wt[t]]=t});var Ft={trim:B,stringTrim:B,trimLeft:K,stringTrimLeft:K,trimRight:Q,stringTrimRight:Q,escape:V(wt),unescape:V(Nt),camelCase:function(t){return(""+t).replace(/(-[a-zA-Z])/g,function(t,n){return n.substring(1).toLocaleUpperCase()})},kebabCase:function(t){return(""+t).replace(/([A-Z])/g,function(t,n){return"-"+n.toLowerCase()})},repeat:Z,stringRepeat:Z,padStart:X,stringPadStart:X,padEnd:G,stringPadEnd:G,startsWith:_,stringStartsWith:_,endsWith:tt,stringEndsWith:tt},Tt={};return yt.objectAssign(Tt,nt,yt,dt,bt,jt,Dt,Et,Ft),t.mixin=function(n){Tt.objectEach(n,function(n,e){t[e]=-1==="cookie".indexOf(e)&&Tt.isFunction(n)?function(){var e=n.apply(t.$context,arguments);return t.$context=null,e}:n})},t.mixin(Tt),t}); |
{ | ||
"name": "xe-utils", | ||
"version": "1.5.26", | ||
"version": "1.5.27", | ||
"description": "XEUtils 函数库", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
158
README.md
@@ -244,7 +244,35 @@ # XEUtils 函数库 | ||
```JavaScript | ||
import { isFormData } from 'xe-utils' | ||
import XEUtils from 'xe-utils' | ||
isFormData({}) // false | ||
isFormData(new FormData()) // true | ||
XEUtils.isFormData({}) // false | ||
XEUtils.isFormData(new FormData()) // true | ||
``` | ||
### isMap (val) 判断是否Map对象 | ||
```JavaScript | ||
import XEUtils from 'xe-utils' | ||
XEUtils.isMap({}) // false | ||
XEUtils.isMap(new Map()) // true | ||
``` | ||
### isWeakMap (val) 判断是否WeakMap对象 | ||
```JavaScript | ||
import XEUtils from 'xe-utils' | ||
XEUtils.isWeakMap({}) // false | ||
XEUtils.isWeakMap(new WeakMap()) // true | ||
``` | ||
### isSet (val) 判断是否Set对象 | ||
```JavaScript | ||
import XEUtils from 'xe-utils' | ||
XEUtils.isSet({}) // false | ||
XEUtils.isSet(new Set()) // true | ||
``` | ||
### isWeakSet (val) 判断是否WeakSet对象 | ||
```JavaScript | ||
import XEUtils from 'xe-utils' | ||
XEUtils.isWeakSet({}) // false | ||
XEUtils.isWeakSet(new WeakSet()) // true | ||
``` | ||
### isLeapYear (date) 判断是否闰年 | ||
@@ -521,7 +549,13 @@ ```JavaScript | ||
XEUtils.sum([{aa: 11}, {aa: 22}, {aa: 66}], 'aa') // 99 | ||
arraySum([{aa: 11}, {aa: 22}, {aa: 66}], (item, key) => { | ||
return item.aa * 2 | ||
}) // 198 | ||
arraySum([{aa: 11}, {aa: 22}, {aa: 66}], (item, key) => item.aa * 2) // 198 | ||
``` | ||
### reduce/arrayReduce ( array, callback, initialValue ) 接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始合并,最终为一个值 | ||
```JavaScript | ||
import XEUtils, { arrayReduce } from 'xe-utils' | ||
XEUtils.reduce([22, 66, 88], (previous, item, index) => previous + item) // 176 | ||
arrayReduce([22, 66, 88], (previous, item, index) => (previous + item) * 2) // 528 | ||
``` | ||
### now/timestamp ( ) 返回时间戳 | ||
@@ -660,9 +694,42 @@ ```JavaScript | ||
```JavaScript | ||
import XEUtils from 'xe-utils' | ||
import XEUtils, { stringToNumber } from 'xe-utils' | ||
XEUtils.toNumber(123) // 123 | ||
XEUtils.toNumber('12.3'}) // 12.3 | ||
XEUtils.toNumber('abc') // 0 | ||
stringToNumber('abc') // 0 | ||
``` | ||
### toInteger/stringToInteger ( num ) 转整数 | ||
```JavaScript | ||
import XEUtils, { stringToInteger } from 'xe-utils' | ||
XEUtils.toInteger(123) // 123 | ||
XEUtils.toInteger('12.3'}) // 12 | ||
stringToInteger('abc') // 0 | ||
``` | ||
### trim/stringTrim ( str ) 去除字符串左右两边的空格 | ||
```JavaScript | ||
import XEUtils, { stringTrim } from 'xe-utils' | ||
XEUtils.stringTrim(' abc ') // 'abc' | ||
stringTrim(' abc ') // 'abc' | ||
``` | ||
### trimLeft/stringTrimLeft ( str ) 去除字符串左边的空格 | ||
```JavaScript | ||
import XEUtils, { stringTrimLeft } from 'xe-utils' | ||
XEUtils.stringTrimLeft(' abc ') // 'abc ' | ||
stringTrimLeft(' abc ') // 'abc ' | ||
``` | ||
### trimRight/stringTrimRight ( str ) 去除字符串右边的空格 | ||
```JavaScript | ||
import XEUtils, { stringTrimRight } from 'xe-utils' | ||
XEUtils.stringTrimRight(' abc ') // ' aa' | ||
stringTrimRight(' abc ') // ' aa' | ||
``` | ||
### escape ( str ) 转义HTML字符串,替换&, <, >, ", ', `字符 | ||
@@ -672,6 +739,5 @@ ```JavaScript | ||
// 转义 | ||
XEUtils.escape('<a>link</a>') | ||
// '<a>link</a>' | ||
XEUtils.escape('<a>link</a>') // '<a>link</a>' | ||
``` | ||
### unescape ( str ) 反转escape | ||
@@ -681,7 +747,59 @@ ```JavaScript | ||
// 反转 | ||
XEUtils.unescape('<a>link</a>') | ||
// '<a>link</a>' | ||
XEUtils.unescape('<a>link</a>') // '<a>link</a>' | ||
``` | ||
### camelCase ( str ) 将字符串转成驼峰字符串 | ||
```JavaScript | ||
import XEUtils from 'xe-utils' | ||
XEUtils.camelCase('projectName') // 'project-name' | ||
``` | ||
### kebabCase ( str ) 将带驼峰字符串转成字符串 | ||
```JavaScript | ||
import XEUtils from 'xe-utils' | ||
XEUtils.kebabCase('project-name') // 'projectName' | ||
``` | ||
### stringRepeat ( str, count ) 将字符串重复 n次 | ||
```JavaScript | ||
import XEUtils, { stringRepeat } from 'xe-utils' | ||
XEUtils.repeat('a', 5) // aaaaa | ||
stringRepeat('a', 5) // aaaaa | ||
``` | ||
### padStart/stringPadStart ( str, targetLength, padString ) 用指定字符从前面开始补全字符串 | ||
```JavaScript | ||
import XEUtils, { stringPadStart } from 'xe-utils' | ||
XEUtils.padStart('a', 5, 'b') // bbbba | ||
stringPadStart('a', 5, 'b') // bbbba | ||
``` | ||
### padEnd/stringPadEnd ( str, targetLength, padString ) 用指定字符从后面开始补全字符串 | ||
```JavaScript | ||
import XEUtils, { stringPadEnd } from 'xe-utils' | ||
XEUtils.padEnd('a', 5, 'b') // abbbb | ||
stringPadEnd('a', 5, 'b') // abbbb | ||
``` | ||
### startsWith/stringStartsWith ( str, val, startIndex ) 判断字符串是否在源字符串的头部 | ||
```JavaScript | ||
import XEUtils, { stringStartsWith } from 'xe-utils' | ||
XEUtils.startsWith('abc', 'b') // false | ||
stringStartsWith('abc', 'a') // true | ||
``` | ||
### endsWith/stringEndsWith ( str, val, startIndex ) 判断字符串是否在源字符串的尾部 | ||
```JavaScript | ||
import XEUtils, { stringEndsWith } from 'xe-utils' | ||
XEUtils.endsWith('abc', 5, 'a') // false | ||
stringEndsWith('abc', 5, 'c') // true | ||
``` | ||
### browse ( ) 获取浏览器内核 | ||
@@ -751,13 +869,13 @@ ```JavaScript | ||
XEUtils.cookie('name', 'value') | ||
// 指定时间戳 10 秒后过期 | ||
// 指定 10 秒后过期 | ||
XEUtils.cookie('name', 'value', {expires: '10s'}) | ||
// 指定时间戳 1 分钟后过期 | ||
// 指定 1 分钟后过期 | ||
XEUtils.cookie('name', 'value', {expires: '1m'}) | ||
// 指定时间戳 1 小时后过期 | ||
// 指定 1 小时后过期 | ||
XEUtils.cookie('name', 'value', {expires: '1H'}) | ||
// 指定时间戳 1 天后过期 | ||
// 指定 1 天后过期 | ||
XEUtils.cookie('name', 'value', {expires: '1d'}) | ||
// 指定时间戳 1 月后过期 | ||
// 指定 1 月后过期 | ||
XEUtils.cookie('name', 'value', {expires: '1M'}) | ||
// 指定时间戳 1 年后过期 | ||
// 指定 1 年后过期 | ||
XEUtils.cookie('name', 'value', {expires: '1y'}) | ||
@@ -764,0 +882,0 @@ // 指定时间戳后过期 |
@@ -5,4 +5,4 @@ 'use strict' | ||
XEUtils.version = '1.5.26' | ||
XEUtils.version = '1.5.27' | ||
module.exports = XEUtils |
@@ -227,3 +227,4 @@ 'use strict' | ||
/** | ||
* 求和函数,将数值相加 | ||
* 求和函数,将数值相加 | ||
* | ||
* @param {Array} array 数组 | ||
@@ -233,3 +234,3 @@ * @param {Function/String} iteratee 方法或属性 | ||
* @return {Number} | ||
*/ | ||
*/ | ||
function arraySum (array, iteratee, context) { | ||
@@ -249,2 +250,24 @@ var result = 0 | ||
/** | ||
* 接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始合并,最终为一个值。 | ||
* | ||
* @param {Array} array 数组 | ||
* @param {Function} callback 方法 | ||
* @param {Object} initialValue 初始值 | ||
* @return {Number} | ||
*/ | ||
function arrayReduce (array, callback, initialValue) { | ||
var previous = initialValue | ||
var index = 0 | ||
var len = array.length | ||
if (typeof initialValue === 'undefined') { | ||
previous = array[0] | ||
index = 1 | ||
} | ||
for (; index < len; index++) { | ||
previous = callback.call(global, previous, array[index], index, array) | ||
} | ||
return previous | ||
} | ||
var arrayExports = { | ||
@@ -272,5 +295,7 @@ arrayUniq: arrayUniq, | ||
arraySum: arraySum, | ||
sum: sum | ||
sum: sum, | ||
arrayReduce: arrayReduce, | ||
reduce: arrayReduce | ||
} | ||
module.exports = arrayExports |
@@ -10,7 +10,7 @@ 'use strict' | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
var isArray = Array.isArray || function (val) { | ||
return objectToString.call(val) === '[object Array]' | ||
var isArray = Array.isArray || function (obj) { | ||
return objectToString.call(obj) === '[object Array]' | ||
} | ||
@@ -21,7 +21,7 @@ | ||
* | ||
* @param {Number} val 数值 | ||
* @param {Number} obj 数值 | ||
* @return {Boolean} | ||
*/ | ||
function isFloat (val) { | ||
return val !== null && !isNaN(val) && !isInteger(val) | ||
function isFloat (obj) { | ||
return obj !== null && !isNaN(obj) && !isInteger(obj) | ||
} | ||
@@ -40,7 +40,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isFunction (val) { | ||
return typeof val === 'function' | ||
function isFunction (obj) { | ||
return typeof obj === 'function' | ||
} | ||
@@ -51,7 +51,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isBoolean (val) { | ||
return typeof val === 'boolean' | ||
function isBoolean (obj) { | ||
return typeof obj === 'boolean' | ||
} | ||
@@ -62,7 +62,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isString (val) { | ||
return typeof val === 'string' | ||
function isString (obj) { | ||
return typeof obj === 'string' | ||
} | ||
@@ -73,7 +73,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isNumber (val) { | ||
return typeof val === 'number' | ||
function isNumber (obj) { | ||
return typeof obj === 'number' | ||
} | ||
@@ -84,7 +84,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isRegExp (val) { | ||
return objectToString.call(val) === '[object RegExp]' | ||
function isRegExp (obj) { | ||
return objectToString.call(obj) === '[object RegExp]' | ||
} | ||
@@ -95,7 +95,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isObject (val) { | ||
return typeof val === 'object' | ||
function isObject (obj) { | ||
return typeof obj === 'object' | ||
} | ||
@@ -106,7 +106,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isPlainObject (val) { | ||
return val ? val.constructor === Object : false | ||
function isPlainObject (obj) { | ||
return obj ? obj.constructor === Object : false | ||
} | ||
@@ -117,7 +117,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isDate (val) { | ||
return objectToString.call(val) === '[object Date]' | ||
function isDate (obj) { | ||
return objectToString.call(obj) === '[object Date]' | ||
} | ||
@@ -128,7 +128,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isError (val) { | ||
return objectToString.call(val) === '[object Error]' | ||
function isError (obj) { | ||
return objectToString.call(obj) === '[object Error]' | ||
} | ||
@@ -139,7 +139,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isTypeError (val) { | ||
return val ? val.constructor === TypeError : false | ||
function isTypeError (obj) { | ||
return obj ? obj.constructor === TypeError : false | ||
} | ||
@@ -150,8 +150,8 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isEmpty (val) { | ||
if (val === 0 || !isNumber(val)) { | ||
for (var key in val) { | ||
function isEmpty (obj) { | ||
if (obj === 0 || !isNumber(obj)) { | ||
for (var key in obj) { | ||
return false | ||
@@ -167,7 +167,7 @@ } | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isNull (val) { | ||
return val === null | ||
function isNull (obj) { | ||
return obj === null | ||
} | ||
@@ -178,7 +178,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isSymbol (val) { | ||
return typeof Symbol !== 'undefined' && Symbol.isSymbol ? Symbol.isSymbol(val) : (typeof val === 'symbol') | ||
function isSymbol (obj) { | ||
return typeof Symbol !== 'undefined' && Symbol.isSymbol ? Symbol.isSymbol(obj) : (typeof obj === 'symbol') | ||
} | ||
@@ -189,7 +189,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isArguments (val) { | ||
return objectToString.call(val) === '[object Arguments]' | ||
function isArguments (obj) { | ||
return objectToString.call(obj) === '[object Arguments]' | ||
} | ||
@@ -200,7 +200,7 @@ | ||
* | ||
* @param {Number} num 数值 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isElement (val) { | ||
return val && isString(val.nodeName) && isNumber(val.nodeType) | ||
function isElement (obj) { | ||
return obj && isString(obj.nodeName) && isNumber(obj.nodeType) | ||
} | ||
@@ -211,7 +211,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isDocument (val) { | ||
return val && val.nodeType === 9 && typeof document !== 'undefined' | ||
function isDocument (obj) { | ||
return obj && obj.nodeType === 9 && typeof document !== 'undefined' | ||
} | ||
@@ -222,7 +222,7 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isWindow (val) { | ||
return val && val === val.window && typeof window !== 'undefined' | ||
function isWindow (obj) { | ||
return obj && obj === obj.window && typeof window !== 'undefined' | ||
} | ||
@@ -233,10 +233,50 @@ | ||
* | ||
* @param {Object} val 对象 | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isFormData (val) { | ||
return typeof FormData !== 'undefined' && val instanceof FormData | ||
function isFormData (obj) { | ||
return typeof FormData !== 'undefined' && obj instanceof FormData | ||
} | ||
/** | ||
* 判断是否Map对象 | ||
* | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isMap (obj) { | ||
return typeof Map !== 'undefined' && obj instanceof Map | ||
} | ||
/** | ||
* 判断是否WeakMap对象 | ||
* | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isWeakMap (obj) { | ||
return typeof WeakMap !== 'undefined' && obj instanceof WeakMap | ||
} | ||
/** | ||
* 判断是否Set对象 | ||
* | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isSet (obj) { | ||
return typeof Set !== 'undefined' && obj instanceof Set | ||
} | ||
/** | ||
* 判断是否WeakSet对象 | ||
* | ||
* @param {Object} obj 对象 | ||
* @return {Boolean} | ||
*/ | ||
function isWeakSet (obj) { | ||
return typeof WeakSet !== 'undefined' && obj instanceof WeakSet | ||
} | ||
/** | ||
* 判断是否闰年 | ||
@@ -651,2 +691,6 @@ * | ||
isFormData: isFormData, | ||
isMap: isMap, | ||
isWeakMap: isWeakMap, | ||
isSet: isSet, | ||
isWeakSet: isWeakSet, | ||
isLeapYear: isLeapYear, | ||
@@ -653,0 +697,0 @@ getType: getType, |
@@ -37,3 +37,3 @@ 'use strict' | ||
} | ||
if (!isNaN(str)) { | ||
if (/^[0-9]{11,13}$/.test(str)) { | ||
return new Date(str) | ||
@@ -40,0 +40,0 @@ } |
@@ -61,2 +61,3 @@ 'use strict' | ||
* @param { String/Number } str 数值 | ||
* @return {Number} | ||
*/ | ||
@@ -71,2 +72,11 @@ function stringToNumber (str) { | ||
/** | ||
* 转整数 | ||
* @param { String/Number } str 数值 | ||
* @return {Number} | ||
*/ | ||
function stringToInteger (str) { | ||
return parseInt(stringToNumber(str)) | ||
} | ||
var numberExports = { | ||
@@ -80,5 +90,7 @@ getRandom: getRandom, | ||
toNumber: stringToNumber, | ||
stringToNumber: stringToNumber | ||
stringToNumber: stringToNumber, | ||
toInteger: stringToInteger, | ||
stringToInteger: stringToInteger | ||
} | ||
module.exports = numberExports |
@@ -5,2 +5,32 @@ 'use strict' | ||
/** | ||
* 去除字符串左右两边的空格 | ||
* | ||
* @param {String} str 字符串 | ||
* @return {String} | ||
*/ | ||
function stringTrim (str) { | ||
return str && str.trim ? str.trim() : stringTrimRight(stringTrimLeft(str)) | ||
} | ||
/** | ||
* 去除字符串左边的空格 | ||
* | ||
* @param {String} str 字符串 | ||
* @return {String} | ||
*/ | ||
function stringTrimLeft (str) { | ||
return str && str.trimLeft ? str.trimLeft() : ('' + str).replace(/^[\s\uFEFF\xA0]+/g, '') | ||
} | ||
/** | ||
* 去除字符串右边的空格 | ||
* | ||
* @param {String} str 字符串 | ||
* @return {String} | ||
*/ | ||
function stringTrimRight (str) { | ||
return str && str.trimRight ? str.trimRight() : ('' + str).replace(/[\s\uFEFF\xA0]+$/g, '') | ||
} | ||
var escapeMap = { | ||
@@ -23,3 +53,3 @@ '&': '&', | ||
return function (str) { | ||
return String(str || '').replace(replaceRegexp, function (match) { | ||
return ('' + str).replace(replaceRegexp, function (match) { | ||
return dataMap[match] | ||
@@ -46,7 +76,135 @@ }) | ||
/** | ||
* 将带字符串转成驼峰字符串,例如 project-name => projectName | ||
* | ||
* @param {String} str 字符串 | ||
* @return {String} | ||
*/ | ||
function camelCase (str) { | ||
return ('' + str).replace(/(-[a-zA-Z])/g, function (text, u) { return u.substring(1).toLocaleUpperCase() }) | ||
} | ||
/** | ||
* 将带驼峰字符串转成字符串,例如 projectName => project-name | ||
* | ||
* @param {String} str 字符串 | ||
* @return {String} | ||
*/ | ||
function kebabCase (str) { | ||
return ('' + str).replace(/([A-Z])/g, function (text, u) { return '-' + u.toLowerCase() }) | ||
} | ||
/** | ||
* 将字符串重复 n次 | ||
* | ||
* @param {String} str 字符串 | ||
* @param {Number} count 次数 | ||
* @return {String} | ||
*/ | ||
function stringRepeat (str, count) { | ||
var rest = '' + str | ||
if (str.repeat) { | ||
return str.repeat(count) | ||
} | ||
var list = isNaN(count) ? [] : new Array(parseInt(count)) | ||
return list.join(rest) + (list.length > 0 ? rest : '') | ||
} | ||
/** | ||
* 用指定字符从前面开始补全字符串 | ||
* | ||
* @param {String} str 字符串 | ||
* @param {Number} targetLength 结果长度 | ||
* @param {Number} padString 补全字符 | ||
* @return {String} | ||
*/ | ||
function stringPadStart (str, targetLength, padString) { | ||
var rest = '' + str | ||
if (rest.padStart) { | ||
return rest.padStart(targetLength, padString) | ||
} | ||
if ((targetLength >> 0) > rest.length) { | ||
padString = String(padString || ' ') | ||
targetLength -= rest.length | ||
if (targetLength > padString.length) { | ||
padString += stringRepeat(padString, targetLength / padString.length) | ||
} | ||
return padString.slice(0, targetLength) + rest | ||
} | ||
return rest | ||
} | ||
/** | ||
* 用指定字符从后面开始补全字符串 | ||
* | ||
* @param {String} str 字符串 | ||
* @param {Number} targetLength 结果长度 | ||
* @param {Number} padString 补全字符 | ||
* @return {String} | ||
*/ | ||
function stringPadEnd (str, targetLength, padString) { | ||
var rest = '' + str | ||
if (rest.padEnd) { | ||
return rest.padEnd(targetLength, padString) | ||
} | ||
if ((targetLength >> 0) > rest.length) { | ||
padString = String(padString || ' ') | ||
targetLength -= rest.length | ||
if (targetLength > padString.length) { | ||
padString += stringRepeat(padString, targetLength / padString.length) | ||
} | ||
return rest + padString.slice(0, targetLength) | ||
} | ||
return rest | ||
} | ||
/** | ||
* 判断字符串是否在源字符串的头部 | ||
* | ||
* @param {String} str 字符串 | ||
* @param {String/Number} val 值 | ||
* @param {Number} startIndex 开始索引 | ||
* @return {String} | ||
*/ | ||
function stringStartsWith (str, val, startIndex) { | ||
var rest = '' + str | ||
return (arguments.length === 1 ? rest : rest.substring(startIndex)).indexOf(val) === 0 | ||
} | ||
/** | ||
* 判断字符串是否在源字符串的尾部 | ||
* | ||
* @param {String} str 字符串 | ||
* @param {String/Number} val 值 | ||
* @param {Number} startIndex 开始索引 | ||
* @return {String} | ||
*/ | ||
function stringEndsWith (str, val, startIndex) { | ||
var rest = '' + str | ||
return arguments.length === 1 ? rest.indexOf(val) === rest.length - 1 : rest.substring(0, startIndex).indexOf(val) === startIndex - 1 | ||
} | ||
var stringExports = { | ||
trim: stringTrim, | ||
stringTrim: stringTrim, | ||
trimLeft: stringTrimLeft, | ||
stringTrimLeft: stringTrimLeft, | ||
trimRight: stringTrimRight, | ||
stringTrimRight: stringTrimRight, | ||
escape: escape, | ||
unescape: unescape | ||
unescape: unescape, | ||
camelCase: camelCase, | ||
kebabCase: kebabCase, | ||
repeat: stringRepeat, | ||
stringRepeat: stringRepeat, | ||
padStart: stringPadStart, | ||
stringPadStart: stringPadStart, | ||
padEnd: stringPadEnd, | ||
stringPadEnd: stringPadEnd, | ||
startsWith: stringStartsWith, | ||
stringStartsWith: stringStartsWith, | ||
endsWith: stringEndsWith, | ||
stringEndsWith: stringEndsWith | ||
} | ||
module.exports = stringExports |
139320
15%3389
15.15%926
14.6%