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 相关文章推荐
FireFox与IE 下js兼容触发click事件的代码
Nov 20 Javascript
javascript getElementsByName()的用法说明
Jul 31 Javascript
8款非常棒的响应式jQuery 幻灯片插件推荐
Feb 02 Javascript
JQuery入门—JQuery程序的代码风格详细介绍
Jan 03 Javascript
jquery实现网页查找功能示例分享
Feb 12 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
Jun 10 Javascript
jQuery事件用法详解
Oct 06 Javascript
快速实现jQuery多级菜单效果
Feb 01 Javascript
详解node HTTP请求客户端 - Request
May 05 Javascript
vue表单自定义校验规则介绍
Aug 28 Javascript
js如何获取访问IP、地区、当前操作浏览器
Jul 23 Javascript
VUEX采坑之路之获取不到$store的解决方法
Nov 08 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
写一个用户在线显示的程序
2006/10/09 PHP
网友原创的PHP模板类代码
2008/09/07 PHP
PHP 页面跳转到另一个页面的多种方法方法总结
2009/07/07 PHP
php长字符串定义方法
2012/07/12 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
2015/05/12 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
ThinkPHP5分页paginate代码实例解析
2020/11/10 PHP
Jquery ajaxsubmit上传图片实现代码
2010/11/04 Javascript
javascript面向对象之对象的深入理解
2015/01/13 Javascript
jQuery随机密码生成的方法
2015/03/09 Javascript
JavaScript 里的类数组对象
2015/04/08 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
2015/09/14 Javascript
使用JQuery实现Ctrl+Enter提交表单的方法
2015/10/22 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
2017/08/03 Javascript
JSON的parse()方法介绍
2019/01/31 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
2020/04/22 Javascript
Element PageHeader页头的使用方法
2020/07/26 Javascript
[56:35]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第一局
2016/03/06 DOTA
python在linux系统下获取系统内存使用情况的方法
2015/05/11 Python
利用Python如何将数据写到CSV文件中
2018/06/05 Python
Python3 log10()函数简单用法
2019/02/19 Python
Python爬虫 批量爬取下载抖音视频代码实例
2019/08/16 Python
python3 selenium自动化测试 强大的CSS定位方法
2019/08/23 Python
Python3获取cookie常用三种方案
2020/10/05 Python
马来西亚最好的婴儿商店:Motherhood
2017/09/14 全球购物
介绍一下.net和Java的特点和区别
2012/09/26 面试题
优秀毕业生求职信范文
2014/01/02 职场文书
个人租房协议书
2014/04/09 职场文书
关于运动会的口号
2014/06/07 职场文书
2014学习优秀共产党员先进事迹材料思想汇报
2014/09/14 职场文书
2015年挂职锻炼工作总结
2014/12/12 职场文书
数学教师个人总结
2015/02/06 职场文书
观后感的写法
2015/06/19 职场文书
DQL数据查询语句使用示例
2022/12/24 MySQL