基于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 相关文章推荐
摘自百度的图片轮换效果代码
Nov 19 Javascript
javascript 硬盘序列号+其它硬件信息
Dec 23 Javascript
跨域请求之jQuery的ajax jsonp的使用解惑
Oct 09 Javascript
基于JavaScript自定义构造函数的详解说明
Apr 24 Javascript
JS与C#编码解码
Dec 03 Javascript
JavaScript自定义数组排序方法
Feb 12 Javascript
JavaScript把数组作为堆栈使用的方法
Mar 20 Javascript
jQuery使用$.ajax提交表单完整实例
Dec 11 Javascript
js实现仿qq消息的弹出窗效果
Jan 06 Javascript
JavaScript实现打开链接页面的方式汇总
Jun 02 Javascript
JS异步加载的三种实现方式
Mar 16 Javascript
jQuery常见面试题之DOM操作详析
Jul 05 jQuery
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安全配置
2006/10/09 PHP
APMServ使用说明
2006/10/23 PHP
php的一个登录的类 [推荐]
2007/03/16 PHP
用windows下编译过的eAccelerator for PHP 5.1.6实现php加速的使用方法
2007/09/30 PHP
php 数组使用详解 推荐
2011/06/02 PHP
php正则表达匹配中文问题分析小结
2012/03/25 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
2014/11/19 PHP
编写PHP脚本来实现WordPress中评论分页的功能
2015/12/10 PHP
CSS+Jquery实现页面圆角框方法大全
2009/12/24 Javascript
Javascript 中的 && 和 || 使用小结
2010/04/25 Javascript
CodeMirror2 IE7/IE8 下面未知运行时错误的解决方法
2012/03/29 Javascript
ECMAScript6函数默认参数
2015/06/12 Javascript
浅谈JavaScript 数据属性和访问器属性
2016/09/01 Javascript
BootStrap 动态表单效果
2017/06/02 Javascript
Vue2.0实现组件数据的双向绑定问题
2018/03/06 Javascript
vue项目国际化vue-i18n的安装使用教程
2018/03/14 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
2018/03/29 Javascript
使用vue-cli打包过程中的步骤以及问题的解决
2018/05/08 Javascript
webpack4.x CommonJS模块化浅析
2018/11/09 Javascript
详解Angular模板引用变量及其作用域
2018/11/23 Javascript
小程序hover-class点击态效果实现
2019/02/26 Javascript
Vue3.0 响应式系统源码逐行分析讲解
2019/10/14 Javascript
JS实现导航栏楼层特效
2020/01/01 Javascript
Web服务器框架 Tornado简介
2014/07/16 Python
matplotlib作图添加表格实例代码
2018/01/23 Python
Python中的引用知识点总结
2019/05/20 Python
基于FME使用Python过程图解
2020/05/13 Python
python中rc1什么意思
2020/06/19 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
高中校园广播稿
2014/01/11 职场文书
超越自我演讲稿
2014/05/21 职场文书
党员对照检查材料
2014/09/22 职场文书
教师作风整顿个人剖析材料
2014/10/10 职场文书
优秀团队申报材料
2014/12/26 职场文书
Django操作cookie的实现
2021/05/26 Python
CSS 实现角标效果的完整代码
2022/06/28 HTML / CSS