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中获取出错代码所在文件及行数的代码
Sep 23 Javascript
用Jquery.load载入页面实现局部刷新
Jan 22 Javascript
easyui Draggable组件实现拖动效果
Aug 19 Javascript
JavaScript中的call和apply的用途以及区别
Jan 11 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
Sep 16 Javascript
Vue.js递归组件构建树形菜单
Dec 24 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
Aug 31 Javascript
浅谈关于iview表单验证的问题
Sep 29 Javascript
在vue项目中优雅的使用SVG的方法实例详解
Dec 03 Javascript
微信小程序实现判断是分享到群还是个人功能示例
May 03 Javascript
详解async/await 异步应用的常用场景
May 13 Javascript
javaScript中indexOf用法技巧
Nov 26 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中文乱码
2009/11/26 PHP
Yii基于数组和对象的Model查询技巧实例详解
2015/12/28 PHP
PHP单例模式简单用法示例
2017/06/23 PHP
Jquery 快速构建可拖曳的购物车DragDrop
2009/11/30 Javascript
js创建对象的几种常用方式小结(推荐)
2010/10/24 Javascript
JS关闭窗口与JS关闭页面的几种方法小结
2013/12/17 Javascript
轻松创建nodejs服务器(7):阻塞操作的实现
2014/12/18 NodeJs
jQuery控制cookie过期时间的方法
2015/04/07 Javascript
学习JavaScript正则表达式
2015/11/13 Javascript
JavaScript Date对象详解
2016/03/01 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
2016/05/23 Javascript
jQuery实现点击关注和取消功能
2017/07/03 jQuery
Three.js开发实现3D地图的实践过程总结
2017/11/20 Javascript
ReactNative之FlatList的具体使用方法
2017/11/29 Javascript
uni-app使用微信小程序云函数的步骤示例
2020/05/22 Javascript
python标准日志模块logging的使用方法
2013/11/01 Python
python运行时强制刷新缓冲区的方法
2019/01/14 Python
python中对_init_的理解及实例解析
2019/10/11 Python
Python文本处理简单易懂方法解析
2019/12/19 Python
python爬取王者荣耀全皮肤的简单实现代码
2020/01/31 Python
Python连接mysql方法及常用参数
2020/09/01 Python
浅谈matplotlib默认字体设置探索
2021/02/03 Python
AE美国鹰美国官方网站:American Eagle Outfitters
2016/08/22 全球购物
时尚、社区、科技:SEVENSTORE
2019/04/26 全球购物
测绘工程专业个人自我评价
2013/12/01 职场文书
高一英语教学反思
2014/01/22 职场文书
家长学校实施方案
2014/03/15 职场文书
网络优化专员求职信
2014/05/04 职场文书
党旗在我心中演讲稿
2014/09/15 职场文书
2014年高校辅导员工作总结
2014/12/09 职场文书
常务副总经理岗位职责
2015/02/02 职场文书
慰问信格式规范
2015/03/23 职场文书
论语读书笔记
2015/06/26 职场文书
职工趣味运动会开幕词
2016/03/04 职场文书
JavaScript实现简单拖拽效果
2021/09/15 Javascript
微信小程序调用python模型
2022/04/21 Python