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实现预览待上传的本地图片
Mar 15 Javascript
Domino中运用jQuery读取视图内容的方法
Oct 21 Javascript
各浏览器对click方法的支持差异小结
Jul 31 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
Apr 01 Javascript
Javascript堆排序算法详解
Dec 03 Javascript
js,jq,css多方面实现简易下拉菜单功能
May 13 Javascript
浅谈VUE监听窗口变化事件的问题
Feb 24 Javascript
Vue入门之animate过渡动画效果
Apr 08 Javascript
对vue中v-on绑定自定事件的实例讲解
Sep 06 Javascript
JS代码屏蔽F12,右键,粘贴,复制,剪切,选中,操作实例
Sep 17 Javascript
vue实现图片上传功能
May 28 Javascript
JS如何实现在弹出窗口中加载页面
Dec 03 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
社区(php&&mysql)三
2006/10/09 PHP
window+nginx+php环境配置 附配置搭配说明
2010/12/29 PHP
深入eAccelerator与memcached的区别详解
2013/06/06 PHP
PHP数组操作――获取数组最后一个值的方法
2015/04/14 PHP
JS实现跟随鼠标立体翻转图片的方法
2015/05/04 Javascript
基于javascript如何传递特殊字符
2015/11/30 Javascript
javascript设置和获取cookie的方法实例详解
2016/01/05 Javascript
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
2016/01/05 Javascript
详解Node.js中的事件机制
2016/09/22 Javascript
Bootstrap导航简单实现代码
2017/03/06 Javascript
Node.js实现文件上传的示例
2017/06/28 Javascript
图片懒加载imgLazyLoading.js使用详解
2020/09/15 Javascript
angularjs实现分页和搜索功能
2018/01/03 Javascript
详解小程序中h5页面onShow实现及跨页面通信方案
2019/05/30 Javascript
使用p5.js实现动态GIF图片临摹重现
2019/10/23 Javascript
[03:37]2016完美“圣”典 风云人物:Mikasa专访
2016/12/07 DOTA
[00:12]2018DOTA2亚洲邀请赛 sylar表现SOLO技艺
2018/04/06 DOTA
Python中的zip函数使用示例
2015/01/29 Python
Python创建模块及模块导入的方法
2015/05/27 Python
Python 实现文件的全备份和差异备份详解
2016/12/27 Python
在Django中URL正则表达式匹配的方法
2018/12/20 Python
linux环境中没有网络怎么下载python
2019/07/07 Python
PyInstaller运行原理及常用操作详解
2020/06/13 Python
Python如何实现机器人聊天
2020/09/10 Python
python实现图像高斯金字塔的示例代码
2020/12/11 Python
HTML中使用SVG与SVG预定义形状元素介绍
2013/06/28 HTML / CSS
大家访活动实施方案
2014/03/10 职场文书
股权转让意向书
2014/04/01 职场文书
个人主要事迹材料
2014/08/26 职场文书
2015年服务员个人工作总结
2015/05/27 职场文书
新郎婚礼致辞
2015/07/27 职场文书
体育委员竞选稿
2015/11/21 职场文书
2016应届毕业生自荐信范文
2016/01/28 职场文书
css3带你实现3D转换效果
2022/02/24 HTML / CSS
SQL Server数据库基本概念、组成、常用对象与约束
2022/03/20 SQL Server
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers