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下关于$.Ready()的分析
Dec 13 Javascript
jQuery中removeAttr()方法用法实例
Jan 05 Javascript
详谈javascript中的cookie
Jun 03 Javascript
node.js中格式化数字增加千位符的几种方法
Jul 03 Javascript
基于jQuery 实现bootstrapValidator下的全局验证
Dec 07 Javascript
jquery获取复选框checkbox的值的简单实现方法
May 26 Javascript
火狐和ie下获取javascript 获取event的方法(推荐)
Nov 26 Javascript
js仿微信语音播放实现思路
Dec 12 Javascript
javascript实现秒表计时器的制作方法
Feb 16 Javascript
seajs实现强制刷新本地缓存的方法分析
Oct 16 Javascript
图文介绍Vue父组件向子组件传值
Feb 17 Javascript
微信小程序自定义模态弹窗组件详解
Dec 24 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 编程的 5个良好习惯
2009/02/20 PHP
php中current、next与reset函数用法实例
2014/11/17 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
2016/12/19 PHP
PHP Web表单生成器案例分析
2020/06/02 PHP
JS 学习笔记 防止发生命名冲突
2009/07/30 Javascript
JavaScript 异步调用框架 (Part 2 - 用例设计)
2009/08/03 Javascript
boxy基于jquery的弹出层对话框插件扩展应用 弹出层选择器
2010/11/21 Javascript
js自执行函数的几种不同写法的比较
2012/08/16 Javascript
js关闭模态窗口刷新父页面或跳转页面
2012/12/13 Javascript
js弹出的对话窗口永远保持居中显示
2012/12/15 Javascript
jQuery实现类似淘宝购物车全选状态示例
2013/06/26 Javascript
JQuery伸缩导航练习示例
2013/11/13 Javascript
jQuery+ajax实现无刷新级联菜单示例
2015/05/21 Javascript
iscroll碰到Select无法选择下拉刷新的解决办法
2016/05/21 Javascript
jQuery UI插件实现百度提词器效果
2016/11/21 Javascript
js 动态生成json对象、时时更新json对象的方法
2016/12/02 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
React中获取数据的3种方法及优缺点
2020/02/18 Javascript
Node 使用express-http-proxy 做api网关的实现
2020/10/15 Javascript
[15:09]DOTA2国际邀请赛采访专栏:Loda
2013/08/06 DOTA
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
2018/07/25 Python
python3 实现对图片进行局部切割的方法
2018/12/05 Python
实例详解Python模块decimal
2019/06/26 Python
python设置环境变量的作用和实例
2019/07/09 Python
Python fileinput模块如何逐行读取多个文件
2020/10/05 Python
如何Tkinter模块编写Python图形界面
2020/10/14 Python
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
新西兰廉价汽车租赁:Snap Rentals
2018/09/14 全球购物
应届生.NET方向面试题
2015/05/23 面试题
个人自荐书
2013/12/20 职场文书
学子宴答谢词
2014/01/25 职场文书
三八节主持词
2014/03/17 职场文书
不同意离婚上诉状
2015/05/23 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
田径运动会通讯稿
2015/07/18 职场文书
动态规划之使用备忘录来改进Javascript函数
2022/04/07 Javascript