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 相关文章推荐
js实现运行代码需要刷新的解决方法
Aug 18 Javascript
使用JS进行目录上传(相当于批量上传)
Dec 05 Javascript
artDialog双击会关闭对话框的修改过程分享
Aug 05 Javascript
jQuery插件开发详细教程
Jun 06 Javascript
学习JavaScript设计模式之模板方法模式
Jan 20 Javascript
仅9张思维导图帮你轻松学习Javascript 就这么简单
Jun 01 Javascript
ionic2 tabs使用 Modal底部tab弹出框
Dec 30 Javascript
Agularjs妙用双向数据绑定实现手风琴效果
May 26 Javascript
JS给按钮添加跳转功能类似a标签
May 30 Javascript
angularjs中$http异步上传Excel文件方法
Feb 23 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
May 30 jQuery
JavaScript中concat复制数组方法浅析
Jan 20 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
在windows iis5下安装php4.0+mysql之我见
2006/10/09 PHP
php遍历目录方法小结
2015/03/10 PHP
php+ajax实现的点击浏览量加1
2015/04/16 PHP
表单提交时自动复制内容到剪贴板的js代码
2007/03/16 Javascript
jquery的ajax()函数传值中文乱码解决方法介绍
2012/11/08 Javascript
深入领悟JavaScript中的面向对象
2013/11/18 Javascript
利用js动态添加删除table行的示例代码
2013/12/16 Javascript
jquery制作多功能轮播图插件
2015/04/02 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
2016/01/12 Javascript
jquery实现可旋转可拖拽的文字效果代码
2016/01/27 Javascript
js实现按钮控制带有停顿效果的图片滚动
2016/08/30 Javascript
手动初始化Angular的模块与控制器
2016/12/26 Javascript
BootStrap学习系列之布局组件(下拉,按钮组[toolbar],上拉)
2017/01/03 Javascript
AngulerJS学习之按需动态加载文件
2017/02/13 Javascript
Bootstrap按钮组简单实现代码
2017/03/06 Javascript
使用vue框架 Ajax获取数据列表并用BootStrap显示出来
2017/04/24 Javascript
详解axios在vue中的简单配置与使用
2017/05/10 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
2017/06/18 Javascript
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
详解关于vue-area-linkage走过的坑
2018/06/27 Javascript
微信小程序中使用wxss加载图片并实现动画效果
2018/08/13 Javascript
vue单页缓存存在的问题及解决方案(小结)
2018/09/25 Javascript
vue视图不更新情况详解
2019/05/16 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
2019/10/16 Javascript
vue npm install 安装某个指定的版本操作
2020/08/11 Javascript
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
2014/11/18 Python
零基础使用Python读写处理Excel表格的方法
2019/05/02 Python
浅析Python与Mongodb数据库之间的操作方法
2019/07/01 Python
canvas如何绘制钟表的方法
2017/12/13 HTML / CSS
HTML实现代码雨源码及效果示例
2020/02/25 HTML / CSS
Bugatchi官方网站:男士服装在线
2019/04/10 全球购物
组织生活会发言材料
2014/12/15 职场文书
教师党员承诺书2015
2015/01/21 职场文书
幽默口才训练经典句子(48句)
2019/08/19 职场文书
Python爬虫进阶之Beautiful Soup库详解
2021/04/29 Python
python blinker 信号库
2022/05/04 Python