JavaScript生成一个不重复的ID的方法示例


Posted in Javascript onSeptember 16, 2019

本文介绍了JavaScript生成一个不重复的ID的方法示例,分享给大家,具体如下:

/**
 * 生成一个用不重复的ID
 */
function GenNonDuplicateID():String{
 
}

先看看下面的几个方法

1.生成[0,1)的随机数的Math.random,例如

//我这次运行生成的是:0.5834165740043102
Math.random()

2.获取当前时间戳Date.now

//现在时间戳是1482645606622
Date.now() = 1521009303858

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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
关于juqery radio写法的兼容性问题(新老版本jquery)
Jun 14 Javascript
ExtJs使用总结(非常详细)
Mar 22 Javascript
jQuery easyui datagrid动态查询数据实例讲解
Feb 26 Javascript
jquery禁用右键单击功能屏蔽F5刷新
Mar 17 Javascript
javascript基本类型详解
Nov 28 Javascript
使用js画图之正弦曲线
Jan 12 Javascript
微信小程序 ecshop地址三级联动实现实例代码
Feb 28 Javascript
浅谈react.js 之 批量添加与删除功能
Apr 17 Javascript
jquery 验证用户名是否重复代码实例
May 14 jQuery
Vue Element校验validate的实例
Sep 21 Javascript
帮你提高开发效率的JavaScript20个技巧
Jun 18 Javascript
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
Nov 27 Vue.js
解决微信小程序中的滚动穿透问题
Sep 16 #Javascript
微信小程序左滑删除实现代码实例
Sep 16 #Javascript
微信小程序左右滚动公告栏效果代码实例
Sep 16 #Javascript
layui 实现表单和文件上传一起传到后台的例子
Sep 16 #Javascript
Vue 自定义指令实现一键 Copy功能
Sep 16 #Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
Sep 16 #Javascript
layui使用templet格式化表格数据的方法
Sep 16 #Javascript
You might like
简单的php缓存类分享     php缓存机制
2014/01/22 PHP
fckeditor上传文件按日期存放及重命名方法
2015/05/22 PHP
symfony2.4的twig中date用法分析
2016/03/18 PHP
js 鼠标拖动对象 可让任何div实现拖动效果
2009/11/09 Javascript
jquery实现页面图片等比例放大缩小功能
2014/02/12 Javascript
jquery如何扑捉回车键触发的事件
2014/04/24 Javascript
JavaScript插件化开发教程 (二)
2015/01/27 Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
2016/04/18 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
ECMAScript6 新特性范例大全
2017/03/24 Javascript
使用JS动态显示文本
2017/09/09 Javascript
微信小程序页面生命周期详解
2018/01/31 Javascript
JavaScript实现区块链
2018/03/14 Javascript
jQuery实现下拉菜单动态添加数据点击滑出收起其他功能
2018/06/14 jQuery
微信小程序实现自定义modal弹窗封装的方法
2018/06/15 Javascript
Express结合Webpack的全栈自动刷新
2019/05/23 Javascript
Vue.js实现大屏数字滚动翻转效果
2019/11/29 Javascript
解决vue-cli@3.xx安装不成功的问题及搭建ts-vue项目
2020/02/09 Javascript
js实现全选和全不选
2020/07/28 Javascript
[43:43]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第三场 11.29
2020/12/02 DOTA
Python中优化NumPy包使用性能的教程
2015/04/23 Python
Django框架中处理URLconf中特定的URL的方法
2015/07/20 Python
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
2016/04/23 Python
Python用zip函数同时遍历多个迭代器示例详解
2016/11/14 Python
Python matplotlib画图实例之绘制拥有彩条的图表
2017/12/28 Python
Python回文字符串及回文数字判定功能示例
2018/03/20 Python
Python 16进制与中文相互转换的实现方法
2018/07/09 Python
Python中的random.uniform()函数教程与实例解析
2019/03/02 Python
python仿抖音表白神器
2019/04/08 Python
wxpython绘制圆角窗体
2019/11/18 Python
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
行政专员岗位职责
2014/01/02 职场文书
《千年梦圆在今朝》教学反思
2014/02/24 职场文书
2015年元旦主持词结束语
2014/12/14 职场文书
Nginx缓存设置案例详解
2021/09/15 Servers
Win11如何查看显卡型号 Win11查看显卡型号的方法
2022/08/14 数码科技