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 相关文章推荐
JavaScript入门教程(8) Location地址对象
Jan 31 Javascript
javascript 模拟JQuery的Ready方法实现并出现的问题
Dec 06 Javascript
javascript中日期转换成时间戳的小例子
Mar 21 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
Apr 19 Javascript
jQuery原型属性和原型方法详解
Jul 07 Javascript
jquery动态增加删减表格行特效
Nov 20 Javascript
Vue.js学习之计算属性
Jan 22 Javascript
基于node搭建服务器,写接口,调接口,跨域的实例
May 13 Javascript
JavaScript数组方法的错误使用例子
Sep 13 Javascript
微信小程序实现左侧滑栏过程解析
Aug 26 Javascript
p5.js绘制旋转的正方形
Oct 23 Javascript
node.js中module模块的功能理解与用法实例分析
Feb 14 Javascript
解决微信小程序中的滚动穿透问题
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 Curl多线程原理实例详解
2013/11/06 PHP
PHP实现一个简单url路由功能实例
2016/11/05 PHP
magento后台无法登录解决办法的两种方法
2016/12/09 PHP
php中file_get_contents()函数用法实例
2019/02/21 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
javascript第一课
2007/02/27 Javascript
Jquery easyui 下loaing效果示例代码
2013/08/12 Javascript
Javascript WebSocket使用实例介绍(简明入门教程)
2014/04/16 Javascript
js调试系列 控制台命令行API使用方法
2014/06/18 Javascript
JS实现适合于后台使用的动画折叠菜单效果
2015/09/21 Javascript
浅谈Javascript中substr和substring的区别
2015/09/30 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
2016/01/26 Javascript
关于session和cookie的简单理解
2016/06/08 Javascript
vuex页面刷新后数据丢失的方法
2019/01/17 Javascript
JS使用数组实现的队列功能示例
2019/03/04 Javascript
js核心基础之闭包的应用实例分析
2019/05/11 Javascript
javascript+HTML5 canvas绘制时钟功能示例
2019/05/15 Javascript
jQuery内容选择器与表单选择器实例分析
2019/06/28 jQuery
js实现贪吃蛇小游戏
2019/10/29 Javascript
纯 JS 实现放大缩小拖拽功能(完整代码)
2019/11/25 Javascript
Vue data的数据响应式到底是如何实现的
2020/02/11 Javascript
[02:12]探秘2016国际邀请赛中国区预选赛选手房间
2016/06/25 DOTA
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
对python修改xml文件的节点值方法详解
2018/12/24 Python
Python 矩阵转置的几种方法小结
2019/12/02 Python
Python字符串中删除特定字符的方法
2020/01/15 Python
详解python中各种文件打开模式
2020/01/19 Python
Python通过Tesseract库实现文字识别
2020/03/05 Python
HTML5+lufylegend实现游戏中的卷轴
2016/02/29 HTML / CSS
Canvas中设置width与height的问题浅析
2018/11/01 HTML / CSS
高级文秘工作总结的自我评价
2013/09/28 职场文书
《梅兰芳学艺》教学反思
2014/02/24 职场文书
法院四风对照检查材料思想汇报
2014/10/06 职场文书
2019年共青团工作条例最新版
2019/11/12 职场文书
CSS 左边固定宽右边自适应的6种方法
2022/05/15 HTML / CSS
Python实现聚类K-means算法详解
2022/07/15 Python