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 textlimit 显示用户输入的字符数 限制用户输入的字符数
May 14 Javascript
js控制CSS样式属性语法对照表
Dec 11 Javascript
获取offsetTop和offsetLeft值的js代码(兼容)
Apr 16 Javascript
JavaScript内存管理介绍
Mar 13 Javascript
javascript设计模式--策略模式之输入验证
Nov 27 Javascript
jQuery中值得注意的trigger方法浅析
Dec 12 Javascript
简单易懂的天气插件(代码分享)
Feb 04 Javascript
JS奇技之利用scroll来监听resize详解
Jun 15 Javascript
AngularJS 最常用的八种功能(基础知识)
Jun 26 Javascript
Angular实现的进度条功能示例
Feb 18 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
Aug 25 Javascript
javascript开发实现贪吃蛇游戏
Jul 31 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.ini中的php-5.2.0配置指令详解
2008/03/27 PHP
PHP多线程抓取网页实现代码
2010/07/22 PHP
php笔记之:php函数range() round()和list()的使用说明
2013/04/26 PHP
AJAX的跨域访问-两种有效的解决方法介绍
2013/06/22 PHP
PHP判断一个字符串是否是回文字符串的方法
2015/03/23 PHP
php判断数组是否为空的实例方法
2020/05/10 PHP
关于document.cookie的使用javascript
2010/10/29 Javascript
jquery索引在使用中的一些困惑
2013/10/24 Javascript
javascript history对象(历史记录)使用方法(实现浏览器前进后退)
2014/01/07 Javascript
Lua表达式和控制结构学习笔记
2014/12/15 Javascript
jQuery及JS实现循环中暂停的方法
2015/02/02 Javascript
JS实现的竖向折叠菜单代码
2015/10/21 Javascript
AngularJS 过滤器的简单实例
2016/07/27 Javascript
vue.js入门教程之绑定class和style样式
2016/09/02 Javascript
使用Ajax与服务器(JSON)通信实例
2016/11/04 Javascript
详解如何构建Angular项目目录结构
2017/07/13 Javascript
67 个节约开发时间的前端开发者的工具、库和资源
2017/09/12 Javascript
jquery+css3实现熊猫tv导航代码分享
2018/02/12 jQuery
Node.js操作系统OS模块用法分析
2019/01/04 Javascript
JavaScript图像放大镜效果实现方法详解
2020/06/28 Javascript
Python利用pyHook实现监听用户鼠标与键盘事件
2014/08/21 Python
最基础的Python的socket编程入门教程
2015/04/23 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
python函数map()和partial()的知识点总结
2020/05/26 Python
pycharm + django跨域无提示的解决方法
2020/12/06 Python
一款纯css3实现的竖形二级导航的实例教程
2014/12/11 HTML / CSS
加热夹克:RAVEAN
2018/10/19 全球购物
美国在线纱线商店:Darn Good Yarn
2019/03/20 全球购物
结构工程个人自荐信范文
2013/11/30 职场文书
汽车专业人才自我鉴定范文
2013/12/29 职场文书
小学教师师德师风个人整改措施
2014/09/18 职场文书
社会治安综合治理责任书
2015/01/29 职场文书
年会邀请函范文
2015/01/30 职场文书
反四风问题学习心得体会
2016/01/22 职场文书
MongoDB 常用的crud操作语句
2021/06/20 MongoDB
Python进程间的通信之语法学习
2022/04/11 Python