040几种原生手工封装UUID组件的方案

040几种原生手工封装UUID组件的方案

结合时间戳和自定义进制方案处理生成UUID

/**
 * 结合时间戳和自定义进制方案处理生成UUID
 * @param startsWord 定义起始字符,如:as
 * @param hex 指定进制,如:10 16 32
 * @returns 32位字符+4个连接号-组成的uuid,如:as187860-7f8d-82a5-2d34-618460a1ac39
 */
export function Uuid(startsWord: string = '', hex: number = 16): string {
   
  const tm: string = Date.now().toString(hex).slice(-12);
  let tmp: string = '********-****-****-****-************'.slice(0, -tm.length);
  startsWord && (tmp = tmp.substring(startsWord.length));
  return (
    startsWord +
    tmp.replace(/[\*]/g, (c) => {
   
      if (c === '*') {
   
        return ((Math.random() * hex) | 0).toString(hex);
      } else {
   
        return c;
      }
    }) +
    tm
  );
}

利用时间点做后缀,加随机数方式获取UUID

function uuid() {
   
  var tm = Date.now().toString(16);
  var tmp = 'asxxxxxx-yxxx-2xxx-yxxx-yxxxxxxxxxxx'.slice(0, -tm.length);
  return (
    tmp.replace(/[xy]/g, (c) => {
   
      var r = (Math.random() * 16) | 0;
      return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);
    }) + tm
  );
}

URL.createObjectURL方法

  • 返回的 URL 会带上一段 36 位长的字符串,和 UUID 的长度一致
function uuidBlob() {
   
  var temp_url = URL.createObjectURL(new Blob());
  var uuid = temp_url.toString();
  URL.revokeObjectURL(temp_url);
  return uuid.substring(uuid.lastIndexOf('/') + 1);
}

可以固定某几个值不变,加持随机数

  • 通过Math.random()获取随机数,并正则掉设置的默认字符
function guid() {
   
  return 'asxxxxxx-xxxx-2xxx-yxxx-xxxxxxxxxxxx'.replace(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿赛工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值