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 相关文章推荐
JavaScript中的关键字"VAR"使用详解 分享
Jul 31 Javascript
在JavaScript中处理时间之getHours()方法的使用
Jun 10 Javascript
jQuery实现网页抖动的菜单抖动效果
Aug 07 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
Nov 02 Javascript
jquery实现表格隔行换色效果
Nov 19 Javascript
Javascript中判断一个值是否为undefined的方法详解
Sep 28 Javascript
js中数组的常用方法小结
Dec 30 Javascript
js正则表达式验证密码强度【推荐】
Mar 03 Javascript
vue中使用cropperjs的方法
Mar 01 Javascript
jquery实现下载图片功能
Jul 18 jQuery
JS实现容器模块左右拖动效果
Jan 14 Javascript
JS实现简易日历效果
Jan 25 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加密解密的代码
2006/10/09 PHP
PHP 操作文件的一些FAQ总结
2009/02/12 PHP
解析PHP中数组元素升序、降序以及重新排序的函数
2013/06/20 PHP
WordPress网站性能优化指南
2015/11/18 PHP
PHP PDOStatement::setAttribute讲解
2019/02/01 PHP
Javascript中的var_dump函数实现代码
2009/09/07 Javascript
jQuery 阴影插件代码分享
2012/01/09 Javascript
jQuery-serialize()输出序列化form表单值的方法
2012/12/26 Javascript
jQuery中bind与live的用法及区别小结
2014/01/27 Javascript
js实现精美的图片跟随鼠标效果实例
2015/05/16 Javascript
JavaScript中标识符提升问题
2015/06/11 Javascript
基于JavaScript实现网页倒计时自动跳转代码
2015/12/28 Javascript
JavaScript File API文件上传预览
2016/02/02 Javascript
Bootstrap轮播插件使用代码
2016/10/11 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
vue-router:嵌套路由的使用方法
2017/02/21 Javascript
详解JavaScript中return的用法
2017/05/08 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
2017/11/09 Javascript
Angular 组件之间的交互的示例代码
2018/03/24 Javascript
nodejs中实现修改用户路由功能
2019/05/24 NodeJs
JS检索下拉列表框中被选项目的索引号(selectedIndex)
2019/12/17 Javascript
Vue父组件监听子组件生命周期
2020/09/03 Javascript
浅析使用Python操作文件
2017/07/31 Python
python实现用户答题功能
2018/01/17 Python
Sublime开发python程序的示例代码
2018/01/24 Python
Python实现获取前100组勾股数的方法示例
2018/05/04 Python
详解Django模版中加载静态文件配置方法
2019/07/21 Python
Pytorch 实现冻结指定卷积层的参数
2020/01/06 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
2020/02/14 Python
python实现滑雪者小游戏
2020/02/22 Python
英国复古服装和球衣购买网站:3Retro Football
2018/07/09 全球购物
小学庆六一活动总结
2014/08/28 职场文书
2015年项目经理工作总结
2015/04/30 职场文书
60条职场经典语录,总有一条能触动你的心
2019/08/21 职场文书
JavaScript事件的委托(代理)的用法示例详解
2022/02/18 Javascript
MySQL中dd::columns表结构转table过程及应用详解
2022/09/23 MySQL