基于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 相关文章推荐
js实现的跟随鼠标移动的时钟效果(中英文日期显示)
Jan 17 Javascript
jQuery中复合属性选择器用法实例
Dec 31 Javascript
jquery-tips悬浮提示插件分享
Jul 31 Javascript
简单的JS时钟实例讲解
Jan 13 Javascript
使用jQuery给input标签设置默认值
Jun 20 Javascript
react-native-tab-navigator组件的基本使用示例代码
Sep 07 Javascript
Bootstrap3.3.7导航栏下拉菜单鼠标滑过展开效果
Oct 31 Javascript
《javascript少儿编程》location术语总结
May 27 Javascript
JavaScript函数的特性与应用实践深入详解
Dec 30 Javascript
微信小程序 调用微信授权窗口相关问题解决
Jul 25 Javascript
查找Vue中下标的操作(some和findindex)
Aug 12 Javascript
JavaScript经典案例之简易计算器
Aug 24 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
windows xp下安装pear
2006/12/02 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
php实现网站文件批量压缩下载功能
2015/10/28 PHP
PHP实现数组和对象的相互转换操作示例
2019/03/20 PHP
添加到收藏夹代码(兼容几乎所有的浏览器)
2007/01/09 Javascript
JS判断是否为数字,是否为整数,是否为浮点数的代码
2010/04/24 Javascript
基于jQuery的左右滚动实现代码
2010/12/03 Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
2011/12/31 Javascript
nodejs 实现模拟form表单上传文件
2014/07/14 NodeJs
JavaScript实现大数的运算
2014/11/24 Javascript
javascript中的正则表达式使用指南
2015/03/01 Javascript
Bootstrap树形组件jqTree的简单封装
2016/01/25 Javascript
深入浅析JS的数组遍历方法(推荐)
2016/06/15 Javascript
javascript创建对象的3种方法
2016/11/02 Javascript
Vue.js实现简单ToDoList 前期准备(一)
2016/12/01 Javascript
在vue组件中使用axios的方法
2018/03/16 Javascript
浅谈Webpack 是如何加载模块的
2018/05/24 Javascript
微信小程序连续签到7天积分获得功能的示例代码
2020/08/20 Javascript
利用python提取wav文件的mfcc方法
2019/01/09 Python
Flask框架学习笔记之使用Flask实现表单开发详解
2019/08/12 Python
Python实现把类当做字典来访问
2019/12/16 Python
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
Can a struct inherit from another class? (结构体能继承类吗)
2014/07/22 面试题
职工运动会邀请函
2014/02/02 职场文书
保险专业求职信
2014/07/07 职场文书
乡镇党建工作汇报材料
2014/08/14 职场文书
就业协议书
2014/09/12 职场文书
学生实习证明范文
2014/09/28 职场文书
财务稽核岗位职责
2015/04/13 职场文书
情侣餐厅的创业计划书范本!
2019/07/26 职场文书
TensorFlow中tf.batch_matmul()的用法
2021/06/02 Python
python函数的两种嵌套方法使用
2022/04/02 Python
通过feDisplacementMap和feImage实现水波特效
2022/04/24 HTML / CSS
IDEA中sout快捷键无效问题的解决方法
2022/07/23 Java/Android
鸿蒙3.0体验感怎么样? 鸿蒙3.0系统评测向
2022/08/14 数码科技