js随机标识

本文介绍js中生成随机数的几种方法。

  1. 时间戳加随机数

    1
    2
    3
    function generateNaiveId() {
    return Date.now().toString(36) + Math.random().toString(36).substr(2); // 'mjmj7s898exgxm62eqc'
    }
  2. 字符串随机抽取

    1
    2
    3
    4
    5
    6
    7
    8
    function generateNaiveId(len = 18) {
    const maxStr = `0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`;
    let res = '';
    for(let i = 0; i < len; i++) {
    res += maxStr[Math.floor(Math.random() * maxStr.length)]
    }
    return res; // '8fYti8o8NLZAX7Xpuj'
    }
  3. 第三方包uuid

    1
    2
    3
    4
    import { v4 as uuidv4 } from 'uuid';
    function generateNaiveId() {
    return uuidv4(); // ⇨ '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'
    }
  4. 通过浏览量内置crypto模块

    1
    2
    3
    function generateNaiveId() {
    return crypto.randomUUID(); // 'df1d45ee-0241-4934-9536-29eddb4d2f69'
    }
  • 注意
    crypto.randomUUID是专业的随机数生成工具,但是对浏览器版本要求比较高(chrome92以上),而且需要安全的上下文(https或者localhost等),使用中需要做好兼容性判断。