tools-for-js
Version:
基于babel构建的JavaScript前端工具库
180 lines (169 loc) • 8.53 kB
JavaScript
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);
};
;