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 相关文章推荐
iframe的父子窗口之间的对象相互调用基本用法
Sep 03 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
Jan 03 Javascript
详解iframe与frame的区别
Jan 13 Javascript
Immutable 在 JavaScript 中的应用
May 02 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
Oct 27 Javascript
Vue.extend构造器的详解
Jul 17 Javascript
jquery鼠标悬停导航下划线滑出效果
Sep 29 jQuery
实现单层json按照key字母顺序排序的示例
Dec 06 Javascript
vue实现的多页面项目如何优化打包的步骤详解
Jul 19 Javascript
element-ui 弹窗组件封装的步骤
Jan 22 Javascript
JS如何实现基于websocket的多端桥接平台
May 14 Javascript
vue router 动态路由清除方式
May 25 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简单命令代码集锦
2007/09/24 PHP
php+mysql查询优化简单实例
2015/01/13 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
Jquery ui css framework
2010/06/28 Javascript
js获取RadioButtonList的Value/Text及选中值等信息实现代码
2013/03/05 Javascript
Extjs中RowExpander控件的默认展开问题示例探讨
2014/01/24 Javascript
动态加载iframe时get请求传递中文参数乱码解决方法
2014/05/07 Javascript
JavaScript实现查找字符串中第一个不重复的字符
2014/12/29 Javascript
AngularJS 中的指令实践开发指南(一)
2016/03/20 Javascript
使用jquery给新生的th绑定hover事件的实例
2017/02/10 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
vue实现可视化可拖放的自定义表单的示例代码
2019/03/20 Javascript
vue搜索和vue模糊搜索代码实例
2019/05/07 Javascript
koa+jwt实现token验证与刷新功能
2019/05/30 Javascript
vue 源码解析之虚拟Dom-render
2019/08/26 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
[01:58]最残酷竞争 2016国际邀请赛中国区预选赛积分循环赛回顾
2016/06/28 DOTA
python基础教程之类class定义使用方法
2014/02/20 Python
浅谈python中scipy.misc.logsumexp函数的运用场景
2016/06/23 Python
PyQt5每天必学之事件与信号
2018/04/20 Python
对python的输出和输出格式详解
2018/12/08 Python
Dlib+OpenCV深度学习人脸识别的方法示例
2019/05/14 Python
如何不用安装python就能在.NET里调用Python库
2019/07/12 Python
python利用tkinter实现屏保
2019/07/30 Python
python requests库爬取豆瓣电视剧数据并保存到本地详解
2019/08/10 Python
Python 中判断列表是否为空的方法
2019/11/24 Python
selenium学习教程之定位以及切换frame(iframe)
2021/01/04 Python
沃尔玛加拿大:Walmart.ca
2020/03/02 全球购物
绩效专员岗位职责
2013/12/02 职场文书
应用心理学个人的求职信
2013/12/08 职场文书
如何写好升职自荐信
2014/01/06 职场文书
法制宣传日活动总结
2014/04/29 职场文书
银行给客户的感谢信
2015/01/23 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
《所见》教学反思
2016/02/23 职场文书
Java数组与堆栈相关知识总结
2021/06/29 Java/Android