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 相关文章推荐
JQuery最佳实践之精妙的自定义事件
Aug 11 Javascript
javascript 快速排序函数代码
May 30 Javascript
javascript setinterval 的正确语法如何书写
Jun 17 Javascript
jQuery对象的selector属性用法实例
Dec 27 Javascript
基于jQuery实现照片墙自动播放特效
Jan 12 Javascript
详解react使用react-bootstrap当轮子造车
Aug 15 Javascript
JavaScript实现简单图片轮播效果
Aug 21 Javascript
element-ui 表格实现单元格可编辑的示例
Feb 26 Javascript
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
Mar 10 Javascript
详解如何在Vue里建立长按指令
Aug 20 Javascript
uni-app如何实现增量更新功能
Jan 03 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
Apr 01 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模板引擎SMARTY
2006/10/09 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
2018/05/24 PHP
java script编程起步(第三课)
2007/01/10 Javascript
js 获取服务器控件值的代码
2010/03/05 Javascript
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
HTTP 304错误的详细讲解
2013/11/13 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
2013/12/10 Javascript
JavaScript分页功能的实现方法
2015/04/25 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
2015/09/15 Javascript
jQuery使用经验小技巧(推荐)
2016/05/31 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
jquery+ajax+text文本框实现智能提示完整实例
2016/07/09 Javascript
jQuery UI Grid 模态框中的表格实例代码
2017/04/01 jQuery
js自定义Tab选项卡效果
2017/06/05 Javascript
JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
2017/07/23 Javascript
js 发布订阅模式的实例讲解
2017/09/10 Javascript
JavaScript数组的5种迭代方法
2017/09/29 Javascript
form表单数据封装成json格式并提交给服务器的实现方法
2017/12/14 Javascript
详解微信UnionID作用
2019/05/15 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
2020/05/11 Javascript
vue中提示$index is not defined错误的解决方式
2020/09/02 Javascript
[01:00:14]DOTA2官方TI8总决赛纪录片 真视界True Sight
2019/01/16 DOTA
在Python中实现贪婪排名算法的教程
2015/04/17 Python
Python函数式编程指南(三):迭代器详解
2015/06/24 Python
python 公共方法汇总解析
2019/09/16 Python
selenium3.0+python之环境搭建的方法步骤
2021/02/01 Python
css3动画事件—webkitAnimationEnd与计时器time事件
2013/01/31 HTML / CSS
中科软笔试题和面试题
2014/10/07 面试题
销售找工作求职信
2013/12/20 职场文书
会计核算科岗位职责
2014/03/19 职场文书
经典团队口号大全
2014/06/21 职场文书
大学生创业计划书
2014/08/14 职场文书
转让协议书范本
2014/09/13 职场文书
大学生自荐信范文
2015/03/05 职场文书
《文化苦旅》读后感:阅读,让人诗意地栖居在大地上
2019/12/24 职场文书
Debian11 Xfce终端光标的颜色怎么设置?
2022/08/14 数码科技