js动态生成唯一id —— 三种方法
一. 引入时间戳,生成可控长度的随机数
随机数长度控制,定义一个长度变量(length),生成可控长度的随机数:
Math.random().toString(36).substr(3,length)
引入时间戳:
Date.now().toString(36)
合在一起最终办法:
1 2 3 | genID(length){ return Number(Math.random().toString().substr(3,length) + Date.now()).toString(36); } |
或参考下面的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <script> /** * 获取当前时间戳、生成唯一标识id, 以及常见方法。 * **/ // 方法一传值转换,注意格式 var date = Date.parse( new Date()) console.log(date); // 1656581121000 // //Date.parse("2022/6/30 10:05") 或者 Date.parse("2022-6-30 10:05") var date = Date.parse( "2022-6-30 10:05:50" ) //方法二通过原型方法直接获得当前时间的毫秒值 var date = new Date().getTime() //方法三Date.now()可以获得当前的时间戳 var date = Date.now() //方法四valueOf()函数返回时间戳值 var data = ( new Date()).valueOf() //方法五将获取时间方法对象转化为一个number类型的数值 var data = Number( new Date()) </script> |
二. JS 生成随机
如:07854BB7-6572-496E-918B-81115BCF396E
1 2 3 4 5 6 7 8 9 10 11 12 | getUuid () { var s = []; var hexDigits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" for ( var i = 0; i < 36; i++) { s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1) } s[14] = "4" s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1) s[8] = s[13] = s[18] = s[23] = "-" let uuid = s.join( "" ) return uuid } |
三、ID生成器NanoID
1.安装
1 | npm i nanoid |
2.使用
1 2 3 4 5 | import {nanoid} from 'nanoid' ; let idA = nanoid() //=> "V1SyGzR8_Z5jdHd8B-myT" // 也可以指定生成字符串的长度 let idB = nanoid(10) |
下面是一些补充
在 JavaScript 中,可以通过使用 Date 对象的 getTime 方法来生成一个毫秒级别的唯一 ID。具体示例如下:
1 2 | let uniqueId = new Date().getTime(); console.log(uniqueId); // 输出的结果类似于 1633067982824 |
如果需要生成更长的 ID,可以将该 ID 转换为字符串,并在后面添上一个随机数。示例如下:
1 2 | let uniqueId = String( new Date().getTime()) + String(Math.floor(Math.random() * 1000)); console.log(uniqueId); // 输出的结果类似于 1633067982824432 |
上述代码将自动生成一个长度为 16 位的唯一 ID,其中前 13 位是时间戳,后 3 位是随机数。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
2022-10-13 js字符串提取中文、英文、数字