UNPKG

tools-for-js

Version:

基于babel构建的JavaScript前端工具库

180 lines (169 loc) 8.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.randomCode = exports.createUUID = void 0; exports.randomColor = randomColor; exports.randomUserAgent = exports.randomNumEnum = exports.randomNum = exports.randomMac = exports.randomIp = exports.randomIntRange = exports.randomIndex = exports.randomEnum = void 0; /******* * @description: 随机索引 * @author: 琴时 * @param {*} length [长度] [默认为10==>0~9] * @return {*} */ var randomIndex = exports.randomIndex = function randomIndex() { var length = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10; return Math.floor(Math.random() * length); }; /******* * @description: 创建UUID * UUID(Universally Unique IDentifier) 全局唯一标识符。 * UUID是一种由算法生成的二进制长度为128位的数字标识符。 * UUID的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”, * 其中的 x 是 0-9 或 a-f 范围内的一个32位十六进制数。 * 在理想情况下,任何计算机和计算机集群都不会生成两个相同的UUID。 * @author: 琴时 * @param {String} symbol [分隔符] [默认为空] * @return {String} * @example: createUUID('-') // 生成UUID并使用[-]作为分隔符 */ var createUUID = exports.createUUID = function createUUID() { var symbol = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var s = []; var hexDigits = '0123456789abcdef'; for (var i = 0; i < 36; i++) { s[i] = hexDigits.charAt(randomIndex(16)); } s[14] = '4'; // bits 12-15 of 时间和版本字段设置为0010 s[19] = hexDigits.charAt(s[19] & 3 | 8); // bits 6-7 of the clock_seq_hi_and_reserved to 01 s[8] = s[13] = s[18] = s[23] = '-'; return s.join('').replace(/-/g, symbol); }; /******* * @description: 随机MAC地址 * @author: 琴时 * @return {String} */ var randomMac = exports.randomMac = function randomMac() { return 'XX:XX:XX:XX:XX:XX'.replace(/X/g, function () { var hexDigits = '0123456789ABCDEF'; return hexDigits.charAt(randomIndex(16)); }); }; /******* * @description: 随机数字 * @author: 琴时 * @param {Number} length [长度] [默认为6] * @return {String} */ var randomNum = exports.randomNum = function randomNum() { var length = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 6; var result = ''; var decimalDigits = '0123456789'; for (var i = 0; i < length; i++) { var index = randomIndex(10); //随机生成一位0~9的数 result += decimalDigits.charAt(index); } return result; }; /******* * @description: 随机字符串 * @author: 琴时 * @param {Number} length [长度] [默认为6] * @return {String} */ var randomCode = exports.randomCode = function randomCode() { var length = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 6; var result = ''; var num = '0123456789'; var lower = 'abcdefghijklmnopqrstuvwxyz'; var capital = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; var character = num + lower + capital; for (var i = 0; i < length; i++) { var index = randomIndex(character.length); //随机生成一位0~61的数 result += character.charAt(index); } return result; }; /******* * @description: 随机颜色 * @author: 琴时 * @param {Array} exclude [跳过颜色(可选参数),默认为空数组] * @return {String} */ function randomColor() { var exclude = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var hexDigits = '0123456789ABCDEF'; var color = '#'; for (var i = 0; i < 6; i++) { var index = randomIndex(16); //随机生成一位0~15的数 color += hexDigits.charAt(index); } //如果生成的颜色和默认颜色重复了,则重新生成 if (exclude.includes(color)) randomColor(exclude); return color; } /******* * @description: 随机数组中的值 * @author: 琴时 * @param {Array} list * @return {*} */ var randomEnum = exports.randomEnum = function randomEnum() { var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; return list[randomIndex(list.length)]; }; /******* * @description: 随机数组中的n个值 * @author: 琴时 * @param {*} array * @param {*} num * @return {Array} */ var randomNumEnum = exports.randomNumEnum = function randomNumEnum(array, num) { var shuffled = array.slice(0), i = array.length, min = i - num, temp, index; while (i-- > min) { index = Math.floor((i + 1) * Math.random()); temp = shuffled[index]; shuffled[index] = shuffled[i]; shuffled[i] = temp; } return shuffled.slice(min); }; /******* * @description: 随机指定范围的整数 * @author: 琴时 * @param {Number} min [最小值] * @param {Number} max [最大值] * @return {Number} 随机值 */ var randomIntRange = exports.randomIntRange = function randomIntRange(min, max) { return randomIndex(max - min + 1) + min; }; /******* * @description: 随机浏览器请求头 * @author: 琴时 * @param {*} platform * @return {*} */ var randomUserAgent = exports.randomUserAgent = function randomUserAgent() { var platform = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'pc'; //浏览器库 var userAgents = ['Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20070731 Ubuntu/dapper-security Firefox/1.5.0.12', 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER', 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0) ,Lynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/1.2.9', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)', 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; QQBrowser/7.0.3698.400)', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)', 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b13pre) Gecko/20110307 Firefox/4.0b13pre', 'Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20070731 Ubuntu/dapper-security Firefox/1.5.0.12', 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; LBBROWSER)', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6', 'Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6', 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; QQBrowser/7.0.3698.400)', 'Opera/9.25 (Windows NT 5.1; U; en), Lynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/1.2.9', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36']; // 移动端设备 var mobileUserAgents = ['MiFit6.6.2 (Mi 10; Android 11; Density/2.75)', 'MiFit6.6.2 (MI 9 Transparent Edition; Android 9; Density/2.5687501)']; var UserAgents = platform === 'pc' ? userAgents : mobileUserAgents; return UserAgents[Math.floor(Math.random() * (0 - UserAgents.length) + UserAgents.length)]; }; /******* * @description: 随机ip * @author: 琴时 * @return {*} */ var randomIp = exports.randomIp = function randomIp() { return Math.floor(Math.random() * (10 - 255) + 255) + '.' + Math.floor(Math.random() * (10 - 255) + 255) + '.' + Math.floor(Math.random() * (10 - 255) + 255) + '.' + Math.floor(Math.random() * (10 - 255) + 255); };