JS如何生成一个不重复的ID的函数


Posted in Javascript onDecember 25, 2016

在MongoDB中的ObjectID,可以理解为是一个不会重复的ID,这里有个链接https://3water.com/article/101164.htm感兴趣可以去研究一下。

我今天要做的就是做一个不重复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如何生成一个不重复的ID的函数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
基于jquery的让页面控件不可用的实现代码
Apr 27 Javascript
基于JQuery实现CheckBox全选全不选
Jun 27 Javascript
js中的异常处理try...catch使用介绍
Sep 21 Javascript
AngularJS基础学习笔记之控制器
May 10 Javascript
jquery实现的简单二级菜单效果代码
Sep 22 Javascript
JavaScript的兼容性与调试技巧
Nov 22 Javascript
canvas绘制多边形
Feb 24 Javascript
谈谈vue中mixin的一点理解
Dec 12 Javascript
使用vue-cli(vue脚手架)快速搭建项目的方法
May 21 Javascript
javascript中undefined的本质解析
Jul 31 Javascript
在vue中动态添加class类进行显示隐藏实例
Nov 09 Javascript
鸿蒙系统中的 JS 开发框架
Sep 18 Javascript
js Canvas实现的日历时钟案例分享
Dec 25 #Javascript
ES6概念 Symbol toString()方法
Dec 25 #Javascript
ES6概念 Symbol.keyFor()方法
Dec 25 #Javascript
ES6概念 ymbol.for()方法
Dec 25 #Javascript
ES2015 Symbol 一种绝不重复的值
Dec 25 #Javascript
基于Javascript实现的不重复ID的生成器
Dec 25 #Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
Dec 25 #Javascript
You might like
PHP实现手机归属地查询API接口实现代码
2012/08/27 PHP
利用laravel搭建一个迷你博客实战教程
2017/08/13 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
Avengerls vs Newbee BO3 第二场2.18
2021/03/10 DOTA
取键盘键位ASCII码的网页
2007/07/30 Javascript
document.createElement()用法
2013/03/13 Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
2014/06/01 Javascript
在JavaScript中操作时间之getMonth()方法的使用
2015/06/10 Javascript
jQuery实现文件上传进度条特效
2015/08/12 Javascript
JavaScript地理位置信息API
2016/06/11 Javascript
深入浅析JavaScript中的scrollTop
2016/07/11 Javascript
详解Javascript数据类型的转换规则
2016/12/12 Javascript
Javascript Event(事件)的传播与冒泡
2017/01/23 Javascript
javascript 的变量、作用域和内存问题
2017/04/19 Javascript
node.js将MongoDB数据同步到MySQL的步骤
2017/12/10 Javascript
微信小程序使用template标签实现五星评分功能
2018/11/03 Javascript
[02:41]DOTA2英雄基础教程 谜团
2013/12/10 DOTA
[01:04:01]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第一场
2014/05/24 DOTA
python定时器(Timer)用法简单实例
2015/06/04 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
把pandas转换int型为str型的方法
2019/01/29 Python
python 瀑布线指标编写实例
2020/06/03 Python
windows10在visual studio2019下配置使用openCV4.3.0
2020/07/14 Python
全球领先的在线cosplay服装商店:RoleCosplay
2020/01/18 全球购物
新浪微博实习心得体会
2014/01/27 职场文书
九年级数学教学反思
2014/02/02 职场文书
幼儿园教师教育感言
2014/02/28 职场文书
学校社会实践活动总结
2014/07/03 职场文书
社区党建工作汇报材料
2014/08/14 职场文书
2014年预备党员端正入党动机思想汇报
2014/09/13 职场文书
趣味运动会开幕词
2015/01/28 职场文书
2015年大学生社会实践评语
2015/03/26 职场文书
毕业论文致谢信
2015/05/14 职场文书
2016年度员工工作表现评语
2015/12/02 职场文书
护士业务学习心得体会
2016/01/25 职场文书
合作意向书怎么写
2019/06/24 职场文书