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 相关文章推荐
jQuery EasyUI 中文API Button使用实例
Apr 14 Javascript
js点击button按钮跳转到另一个新页面
Oct 10 Javascript
javascript中scrollTop详解
Apr 13 Javascript
Js与Jq 获取页面元素值的方法和差异对比
Apr 30 Javascript
JS实现输入框提示文字点击时消失效果
Jul 19 Javascript
jQuery实现给input绑定回车事件的方法
Feb 09 Javascript
ES6解构赋值的功能与用途实例分析
Oct 31 Javascript
基于VuePress 轻量级静态网站生成器的实现方法
Apr 17 Javascript
微信小程序定位当前城市的方法
Jul 19 Javascript
世界上最短的数字判断js代码
Sep 09 Javascript
Vue解决移动端弹窗滚动穿透问题
Dec 15 Vue.js
pnpm对npm及yarn降维打击详解
Aug 05 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
DIY实用性框形天线
2021/03/02 无线电
PHP递归调用的小技巧讲解
2013/02/19 PHP
php比较两个绝对时间的大小
2014/01/31 PHP
百度地图API使用方法详解
2015/08/25 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
鼠标图片振动代码
2006/07/06 Javascript
jQuery1.6 类型判断实现代码
2011/09/01 Javascript
E3 tree 1.6在Firefox下显示问题的修复方法
2013/01/30 Javascript
js/jQuery对象互转(快速操作dom元素)
2013/02/04 Javascript
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
2013/12/14 Javascript
node.js中的path.basename方法使用说明
2014/12/09 Javascript
JS设置网页图片vspace和hspace属性的方法
2015/04/01 Javascript
纯JavaScript实现的分页插件实例
2015/07/14 Javascript
通过Tabs方法基于easyUI+bootstrap制作工作站
2016/03/28 Javascript
原生javascript实现的一个简单动画效果
2016/03/30 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
2016/11/21 Javascript
javascript 网页进度条简单实例
2017/02/22 Javascript
简单谈谈axios中的get,post方法
2017/06/25 Javascript
vue axios数据请求get、post方法及实例详解
2018/09/11 Javascript
ES6 系列之 Generator 的自动执行的方法示例
2018/10/19 Javascript
js字符串处理之绝妙的代码
2019/04/05 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
2019/11/06 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
Python实现上下班抢个顺风单脚本
2018/02/07 Python
python实现基于信息增益的决策树归纳
2018/12/18 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
2019/02/21 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
波兰快递服务:Globkurier.pl
2019/11/08 全球购物
Groupon西班牙官方网站:在线优惠券和交易,节省高达70%
2021/03/13 全球购物
学生就业推荐信
2013/11/13 职场文书
知识改变命运演讲稿
2014/05/21 职场文书
大学生简历求职信
2014/06/24 职场文书
普通话演讲稿
2014/09/03 职场文书
学生保证书
2015/01/16 职场文书
邀请书模板
2015/02/02 职场文书
2016年党建工作简报
2015/11/26 职场文书