[zhongjyuan]通用UUID函数

37 阅读1分钟
	/**
	 * 生成指定长度的 UUID
  * @author zhongjyuan
  * @email zhognjyuan@outlook.com
  * @website http://zhongjyuan.club
  * @date 2023年7月13日11:42:16
	 * @param {number} len UUID 的长度,默认为 36
	 * @param {boolean} removeDash 是否移除连字符,默认为 false
	 * @returns {string} 生成的 UUID
	 */
	uuid: function (len = 36, removeDash = false) {
		// 获取当前时间的毫秒数
		var d = new Date().getTime();

		// 定义模板字符串
		var result = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) {
			// 生成随机数
			var r = (d + Math.random() * 16) % 16 | 0;
			d = Math.floor(d / 16);
			// 根据模板替换字符
			return (c == "x" ? r : (r & 0x3) | 0x8).toString(16);
		});

		// 如果需要移除连字符,则将连字符替换为空字符串
		if (removeDash) {
			result = result.replace(/-/g, "");
		}

		// 返回指定长度的 UUID
		zhongjyuan.logger.trace("[helper] uuid(${0}, ${1}) => ${2}", len, removeDash, result.substring(0, len));
		return result.substring(0, len);
	},