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


Posted in Javascript onDecember 25, 2016

我今天要做的就是做一个不重复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()

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

Javascript 相关文章推荐
jQuery队列控制方法详解queue()/dequeue()/clearQueue()
Dec 02 Javascript
js返回上一页并刷新代码整理
Dec 21 Javascript
jquery+css+ul模拟列表菜单具体实现思路
Apr 15 Javascript
JS实现可改变列宽的table实例
Jul 02 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
Oct 31 Javascript
批量下载对路网图片并生成html的实现方法
Jun 07 Javascript
理解javascript中的Function.prototype.bind的方法
Feb 03 Javascript
基于JavaScript实现下拉列表左右移动代码
Feb 07 Javascript
微信小程序模拟cookie的实现
Jun 20 Javascript
iView框架问题整理小结
Oct 16 Javascript
Vue filter 过滤当前时间 实现实时更新效果
Dec 20 Javascript
vue使用swiper实现左右滑动切换图片
Oct 16 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
Dec 25 #Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
Dec 25 #Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
Dec 25 #Javascript
AngularJS入门教程之Helloworld示例
Dec 25 #Javascript
jQuery实现圣诞节礼物动画案例解析
Dec 25 #Javascript
AngularJS打开页面隐藏显示表达式用法示例
Dec 25 #Javascript
AngularJS开发教程之控制器之间的通信方法分析
Dec 25 #Javascript
You might like
PHP第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
十个PHP高级应用技巧果断收藏
2015/09/25 PHP
使用JavaScript创建新样式表和新样式规则
2016/06/14 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
2018/05/31 PHP
对YUI扩展的Gird组件 Part-1
2007/03/10 Javascript
ie 处理 gif动画 的onload 事件的一个 bug
2007/04/12 Javascript
JS动态添加option和删除option(附实例代码)
2013/04/01 Javascript
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
jquery跟js初始化加载的多种方法及区别介绍
2014/04/02 Javascript
js获取视频时长代码
2014/04/10 Javascript
禁用页面部分JavaScript不是全部而是部分
2014/09/03 Javascript
JavaScript中用于生成随机数的Math.random()方法
2015/06/15 Javascript
ES6概念 Symbol toString()方法
2016/12/25 Javascript
JavaScript自定义分页样式
2017/01/17 Javascript
react实现一个优雅的图片占位模块组件详解
2017/10/30 Javascript
微信小程序实现的canvas合成图片功能示例
2019/05/03 Javascript
Angular value与ngValue区别详解
2019/11/27 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
[02:37]TI8勇士令状不朽珍藏II视频展示
2018/06/23 DOTA
python登陆asp网站页面的实现代码
2015/01/14 Python
Python编程实现的简单Web服务器示例
2017/06/22 Python
详解python字节码
2018/02/07 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
2018/04/25 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
python 数据类型强制转换的总结
2021/01/25 Python
python学习之使用Matplotlib画实时的动态折线图的示例代码
2021/02/25 Python
python 基于pygame实现俄罗斯方块
2021/03/02 Python
德国户外商店:eXXpozed
2020/07/25 全球购物
三好学生演讲稿范文
2014/04/26 职场文书
大学毕业生个人自荐书
2014/07/02 职场文书
环卫工作汇报材料
2014/10/28 职场文书
小学生法制教育心得体会
2016/01/14 职场文书
普希金诗歌赏析(6首)
2019/08/22 职场文书
Java实现学生管理系统(IO版)
2022/02/24 Java/Android
Pyhton爬虫知识之正则表达式详解
2022/04/01 Python
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android