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 相关文章推荐
从阿里妈妈发现的几个不错的表单验证函数
Sep 21 Javascript
jQueryUI的Dialog的简单封装
Jun 07 Javascript
Grid得到选择行数据的方法总结
Jan 17 Javascript
jQuery操作Select的Option上下移动及移除添加等等
Nov 18 Javascript
jquery实现树形二级菜单实例代码
Nov 20 Javascript
javascript实现日期格式转换
Dec 16 Javascript
DOM操作一些常用的属性汇总
Mar 13 Javascript
Javascript中的迭代、归并方法详解
Jun 14 Javascript
利用Vue.js框架实现火车票查询系统(附源码)
Feb 27 Javascript
php简单数据库操作类的封装
Jun 08 Javascript
微信小程序url传参写变量的方法
Aug 09 Javascript
JQuery实现折叠式菜单的详细代码
Jun 03 jQuery
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 中dirname(_file_)讲解
2007/03/18 PHP
php实现QQ空间获取当前用户的用户名并生成图片
2015/07/25 PHP
PHP中的session安全吗?
2016/01/22 PHP
Yii配置与使用memcached缓存的方法
2016/07/13 PHP
php中的抽象方法和抽象类
2017/02/14 PHP
定义select的边框颜色
2008/04/28 Javascript
用javascript getComputedStyle获取和设置style的原理
2008/10/10 Javascript
js的hasownproperty使用示例
2014/03/02 Javascript
JS中的log对象获取以及debug的写法介绍
2014/03/03 Javascript
Backbone.js的一些使用技巧
2015/07/01 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
jQuery实现注册会员时密码强度提示信息功能示例
2017/09/05 jQuery
js删除对象/数组中null、undefined、空对象及空数组方法示例
2018/11/14 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
2018/12/13 Javascript
vue鼠标悬停事件实例详解
2019/04/01 Javascript
一百行JS代码实现一个校验工具
2019/04/30 Javascript
解决使用layui对select append元素无效或者未及时更新的问题
2019/09/18 Javascript
js实现点击选项置顶动画效果
2020/08/25 Javascript
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
2016/01/20 Python
详解python实现读取邮件数据并下载附件的实例
2017/08/03 Python
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
2018/03/23 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
2020/02/20 Python
利用python中的matplotlib打印混淆矩阵实例
2020/06/16 Python
python 装饰器的使用示例
2020/10/10 Python
澳大利亚首屈一指的鞋类品牌:Tony Bianco
2018/03/13 全球购物
Tretorn美国官网:瑞典外套和鞋类品牌,抵御风雨
2018/07/19 全球购物
类的返射机制中的包及核心类
2016/09/12 面试题
会计实习生工作总结的自我评价
2013/10/07 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
教师学习三严三实心得体会
2014/10/13 职场文书
小学班主任个人总结
2015/03/03 职场文书
机关工会工作总结2015
2015/05/26 职场文书
初中英语教学反思范文
2016/02/15 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书
仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案
2021/05/06 MySQL
java高级用法JNA强大的Memory和Pointer
2022/04/19 Java/Android