基于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 Map 和 List 的简单实现代码
Jul 08 Javascript
原生js ActiveXObject获取execl里面的值
Nov 01 Javascript
jquery插件jTimer(jquery定时器)使用方法
Dec 23 Javascript
jquery easyui 对于开始时间小于结束时间的判断示例
Mar 22 Javascript
Jquery中扩展方法extend使用技巧
Aug 24 Javascript
以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
Nov 13 Javascript
ReactNative列表ListView的用法
Aug 02 Javascript
Angular.js中window.onload(),$(document).ready()的写法浅析
Sep 28 Javascript
JS随机排序数组实现方法分析
Oct 11 Javascript
写一个Vue Popup组件
Feb 25 Javascript
vue+elementUi 实现密码显示/隐藏+小图标变化功能
Jan 18 Javascript
详解JavaScript中Arguments对象用途
Aug 30 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中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
php获取淘宝分类id示例
2014/01/16 PHP
php伪静态之APACHE篇
2014/06/02 PHP
php面向对象与面向过程两种方法给图片添加文字水印
2015/08/26 PHP
PHP截取IE浏览器并缩小原图的方法
2016/03/04 PHP
php如何把表单内容提交到数据库
2019/07/08 PHP
php写入mysql中文乱码的实例解决方法
2019/09/17 PHP
JS+XML 省份和城市之间的联动实现代码
2009/10/14 Javascript
jquery 学习之二 属性(html()与html(val))
2010/11/25 Javascript
js调用activeX获取u盘序列号的代码
2011/11/21 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
node.js中的http.response.addTrailers方法使用说明
2014/12/14 Javascript
jQuery简单实现两级下拉菜单效果代码
2015/09/15 Javascript
HTML Table 空白单元格补全的简单实现
2016/10/13 Javascript
简单谈谈vue的过渡动画(推荐)
2017/10/11 Javascript
微信小程序和H5页面间相互跳转代码实例
2019/09/19 Javascript
Jquery属性的获取/设置及样式添加/删除操作技巧分析
2019/12/23 jQuery
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
[02:55]2018DOTA2国际邀请赛勇士令状不朽珍藏Ⅲ饰品一览
2018/08/01 DOTA
使用Python发送各种形式的邮件的方法汇总
2015/11/09 Python
python在不同层级目录import模块的方法
2016/01/31 Python
Python优化技巧之利用ctypes提高执行速度
2016/09/11 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
python实现控制台打印的方法
2019/01/12 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
pycharm新建一个python工程步骤
2019/07/16 Python
使用python处理题库表格并转化为word形式的实现
2020/04/14 Python
详解如何修改python中字典的键和值
2020/09/29 Python
纯HTML5+CSS3制作图片旋转
2016/01/12 HTML / CSS
HTML5实现直播间评论滚动效果的代码
2020/05/27 HTML / CSS
护士演讲稿范文
2014/01/05 职场文书
科学发展观活动总结
2014/08/28 职场文书
西柏坡导游词
2015/02/05 职场文书
清明节网上祭英烈寄语2015
2015/03/04 职场文书
我爱我班主题班会
2015/08/13 职场文书
Minikube搭建Kubernetes集群
2022/03/31 Servers