基于Javascript实现的不重复ID的生成器

发布时间 - 2026-01-10 22:05:45    点击率:

我今天要做的就是做一个不重复ID的生成器

/**
 * 生成一个用不重复的ID
 */
function GenNonDuplicateID():String{
 
}

先看看下面的几个方法

1.生成[0,1)的随机数的Math.random,例如

//我这次运行生成的是:0.5834165740043102
Math.random()

2.获取当前时间戳Date.now

//现在时间戳是1482645606622
Date.now()

3.将10进制转换为其他进制的字符串 Number.toString

//将1482645606622转换成二进制:10101100100110100100100001001000011011110
(1482645606622).toString(2)
//转换成16进制:159349090de MongDB中的ObjectID就是24位16进制数
(1482645606622).toString(16);
//最大进制支持转为36进制,使用字符是0-9a-z :ix48wvry
(1482645606622).toString(36)

GenNonDuplicateID的自我进化

1.随机数版本 v0.0.1

/**
 * 生成一个用不重复的ID
 */
function GenNonDuplicateID(){
 return Math.random().toString()
}
//生成一个类似 0.1283460319177394的ID
GenNonDuplicateID()

2.随机数版本16进制版本 v0.0.2

/**
 * 生成一个用不重复的ID
 */
function GenNonDuplicateID(){
 return Math.random().toString(16)
}
//函数将生成类似 0.c1615913fa915 的ID
GenNonDuplicateID()

3.随机数版本36进制版本 v0.0.3

/**
 * 生成一个用不重复的ID
 */
function GenNonDuplicateID(){
 return Math.random().toString(36)
}
//函数将生成类似 0.hefy7uw6ddzwidkwcmxkzkt9 的ID
GenNonDuplicateID()

4.随机数版本36进制版本 去掉"0." v0.0.4

/**
 * 生成一个用不重复的ID
 */
function GenNonDuplicateID(){
 return Math.random().toString(36).substr(3)
}
//函数将生成类似 8dlv9vabygks2cbg1spds4i 的ID
GenNonDuplicateID()

然而用一个随机数作为ID,随着使用次数的累积,必然会出现相同的两个ID

5.引入时间戳 的36微进制版本 v0.1.1

/**
 * 生成一个用不重复的ID
 */
function GenNonDuplicateID(){
 let idStr = Date.now().toString(36)
 idStr += Math.random().toString(36).substr(3)
 return idStr
}
//函数将生成类似 ix49sfsnt7514k5wpflyb5l2vtok9y66r 的ID
GenNonDuplicateID()

6.引入时间戳 的36微进制版本 加入随机数长度控制 v0.1.2

/**
 * 生成一个用不重复的ID
 */
function GenNonDuplicateID(randomLength){
 let idStr = Date.now().toString(36)
 idStr += Math.random().toString(36).substr(3,randomLength)
 return idStr
}
// GenNonDuplicateID(3) 将生成类似 ix49wl2978w 的ID
GenNonDuplicateID(3)

这样生成的ID前面几位总是相同,看着不爽,于是再改改

7. 引入时间戳 随机数前置 36进制 加入随机数长度控制 v0.1.3

/**
 * 生成一个用不重复的ID
 */
function GenNonDuplicateID(randomLength){
 return Number(Math.random().toString().substr(3,randomLength) + Date.now()).toString(36)
}
//GenNonDuplicateID()将生成 rfmipbs8ag0kgkcogc 类似的ID
GenNonDuplicateID()

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# js  # 生成器  # javascript GUID生成器实现代码  # JavaScript实现的微信二维码图片生成器的示例  # JS简单编号生成器实现方法(附demo源码下载)  # JavaScript中的迭代器和生成器详解  # EditPlus注册码生成器(js代码实现)  # fireworks菜单生成器mm_menu.js在 IE 7.0 显示问题的解决方法  # js之弹出式窗口代码生成器  # javascript实现的鼠标链接提示效果生成器代码  # 用js实现的一个Flash滚动轮换显示图片代码生成器  # 随机数  # 转换成  # 的是  # 看着  # 几个  # 要做  # 几位  # 转换为  # Date  # random  # strong  # toString  # Number  # function  # GenNonDuplicateID  # String  # pre  # class  # brush 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 教你用AI润色文章,让你的文字表达更专业  linux top下的 minerd 木马清除方法  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  高防服务器如何保障网站安全无虞?  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理  5种Android数据存储方式汇总  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  bootstrap日历插件datetimepicker使用方法  如何在Ubuntu系统下快速搭建WordPress个人网站?  如何在IIS管理器中快速创建并配置网站?  香港服务器租用费用高吗?如何避免常见误区?  Laravel如何处理CORS跨域请求?(配置示例)  Laravel如何实现用户密码重置功能?(完整流程代码)  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  如何用低价快速搭建高质量网站?  如何在服务器上配置二级域名建站?  PythonWeb开发入门教程_Flask快速构建Web应用  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  EditPlus中的正则表达式 实战(1)  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  如何在IIS服务器上快速部署高效网站?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  如何在IIS中配置站点IP、端口及主机头?  iOS正则表达式验证手机号、邮箱、身份证号等  如何在阿里云香港服务器快速搭建网站?  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  EditPlus中的正则表达式实战(5)  php485函数参数是什么意思_php485各参数详细说明【介绍】  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  Android自定义listview布局实现上拉加载下拉刷新功能  Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】  Laravel怎么清理缓存_Laravel optimize clear命令详解  Laravel如何实现API资源集合?(Resource Collection教程)  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  利用python获取某年中每个月的第一天和最后一天  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  如何在IIS中新建站点并配置端口与IP地址?  如何实现javascript表单验证_正则表达式有哪些实用技巧  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  js代码实现下拉菜单【推荐】  如何快速搭建安全的FTP站点?