js 如何生成一个不重复的ID的函数
在MongoDB中的ObjectID,可以理解为是一个不会重复的ID,这里有个链接http://www.jb51.net/article/101164.htm感兴趣可以去研究一下。
我今天要做的就是做一个不重复ID的生成器
- /**
- * 生成一个用不重复的ID
- */
- function GenNonDuplicateID():String{
- }
- 先看看下面的几个方法
- .生成[,)的随机数的Math.random,例如
- //我这次运行生成的是:0.5834165740043102
- Math.random()
- .获取当前时间戳Date.now
- //现在时间戳是1482645606622
- Date.now()
- .将10进制转换为其他进制的字符串 Number.toString
- //将1482645606622转换成二进制:10101100100110100100100001001000011011110
- ().toString()
- //转换成16进制:159349090de MongDB中的ObjectID就是24位16进制数
- ().toString();
- //最大进制支持转为36进制,使用字符是0-9a-z :ix48wvry
- ().toString()
- 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()
- }
- //函数将生成类似 0.c1615913fa915 的ID
- GenNonDuplicateID()
3.随机数版本36进制版本 v0.0.3
- /**
- * 生成一个用不重复的ID
- */
- function GenNonDuplicateID(){
- return Math.random().toString()
- }
- //函数将生成类似 0.hefy7uw6ddzwidkwcmxkzkt9 的ID
- GenNonDuplicateID()
4.随机数版本36进制版本 去掉"0." v0.0.4
- /**
- * 生成一个用不重复的ID
- */
- function GenNonDuplicateID(){
- return Math.random().toString().substr()
- }
- //函数将生成类似 8dlv9vabygks2cbg1spds4i 的ID
- GenNonDuplicateID()
然而用一个随机数作为ID,随着使用次数的累积,必然会出现相同的两个ID
5.引入时间戳 的36微进制版本 v0.1.1
- /**
- * 生成一个用不重复的ID
- */
- function GenNonDuplicateID(){
- let idStr = Date.now().toString()
- idStr += Math.random().toString().substr()
- return idStr
- }
- //函数将生成类似 ix49sfsnt7514k5wpflyb5l2vtok9y66r 的ID
- GenNonDuplicateID()
6.引入时间戳 的36微进制版本 加入随机数长度控制 v0.1.2
- /**
- * 生成一个用不重复的ID
- */
- function GenNonDuplicateID(randomLength){
- let idStr = Date.now().toString()
- idStr += Math.random().toString().substr(,randomLength)
- return idStr
- }
- // GenNonDuplicateID(3) 将生成类似 ix49wl2978w 的ID
- GenNonDuplicateID()
这样生成的ID前面几位总是相同,看着不爽,于是再改改
7. 引入时间戳 随机数前置 36进制 加入随机数长度控制 v0.1.3
- /**
- * 生成一个用不重复的ID
- */
- function GenNonDuplicateID(randomLength){
- return Number(Math.random().toString().substr(,randomLength) + Date.now()).toString()
- }
- //GenNonDuplicateID()将生成 rfmipbs8ag0kgkcogc 类似的ID
- GenNonDuplicateID()
以上所述是小编给大家介绍的JS如何生成一个不重复的ID的函数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
转载:http://www.jb51.net/article/101163.htm
js 如何生成一个不重复的ID的函数的更多相关文章
- js生成一个不重复的ID的函数的进化之路
在MongoDB中的ObjectID,可以理解为是一个不会重复的ID,这里有个链接http://blog.csdn.net/xiamizy/article/details/41521025感兴趣可以去 ...
- JavaScript生成一个不重复的ID
/** * 生成一个用不重复的ID */ function GenNonDuplicateID():String{ } 先看看下面的几个方法 1.生成[0,1)的随机数的Math.random,例如 ...
- jQuery生成一个DIV容器,ID是"rating".
我们需要一些服务器端代码,这个例子中用到了一个PHP文件,读取rating参数然后返回rating总数和平均数.看一下rate.php代码.虽然这些例子也可以不使用AJAX来实现,但显示我们不会那么做 ...
- 【PHP】php生成一个不重复的数字(订单号、会员号)
1.目的:利用php的do .. while 生成一个不重复的字符串或者数组,比如(订单号.会员号) 2.不废话,代码来: $repeat_order = array(); do{ $ordersn ...
- PHP生成一个不重复随机数组的封装方法
<?php /** array unique_rand( int $min, int $max, int $num )* 生成一定数量的不重复随机数* $min 和 $max: 指定随机数的范围 ...
- js随机生成一个数组中的随机字符串以及更新验证码
随机生成m,n范围的值得公式: Math.random()*(n-m)+m: 改正公式:Math.random()*(n+1-m)+m // 生成随机字符串function randomMixed(n ...
- Java生成UUID不重复的id值
在Java中创建UUID在网上查资料才知道在Java中,变成了UUID.创建方式也出奇简单System.out.println( java.util.UUID.randomUUID());
- JS实现生成一个周对应日期数组
/* 获取日期和周 */ getDateWeek() {/* 得到当前日期的时间戳 */ const timestamp = Date.now() // const timestamp = new D ...
- js检查页面上有无重复id的代码分享
用js代码检查一个页面上是否用重复的id. 方法一: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ...
随机推荐
- Win8如何默认以管理员运行程序
在Win7的时候,关闭UAC,使用自己的用户名,所有程序都是默认以管理员身份运行的. 但是在Win8,关闭UAC,程序不是默认以管理员身份运行的. 在论坛看到的解决方法是:1.用Administrat ...
- el-upload控件一次接口请求上传多个文件
el-upload组件默认情况下上传多少个文件就会请求多少次上传接口,如何一次上传多个文件而不必多次请求上传接口呢?直接看代码 html <el-upload :action="act ...
- react的Redux基础
redux的中文文档:http://www.redux.org.cn/ redux的英文官网:https://redux.js.org/ redux相当于vuex Redux 是 JavaScript ...
- linux下安装redis和使用
http://www.linuxidc.com/Linux/2014-05/101979.htm
- composer 类加载器,对 <PSR-4的风格>、<PSR-0的风格>、<PEAR的风格> 风格的类的加载
class ClassLoader { // ... /** * composer 类加载器,对 <PSR-4的风格>.<PSR-0的风格>.<PEAR的风格> 风 ...
- 16,Python网络爬虫之Scrapy框架(CrawlSpider)
今日概要 CrawlSpider简介 CrawlSpider使用 基于CrawlSpider爬虫文件的创建 链接提取器 规则解析器 引入 提问:如果想要通过爬虫程序去爬取”糗百“全站数据新闻数据的话, ...
- git---gui使用
1.登陆的命令: git config –global user.email "1455971532@qq.com" git config –global user.name &q ...
- NopCommerce 导航菜单HTML静态处理以提高性能
因网站要快速上线,有时候NopCommerce性能问题一直是困扰我们的最大因素,查找出来需要优化的部分代码进行修改重构是方法之一,我等非主流优化方式只为快速提高程序整体性能. 我以导航菜单为例,列出我 ...
- Python框架之Django学习笔记(十五)
表单 从Google的简朴的单个搜索框,到常见的Blog评论提交表单,再到复杂的自定义数据输入接口,HTML表单一直是交互性网站的支柱.本次内容将介绍如何用Django对用户通过表单提交的数据进行访问 ...
- Python 拓展之特殊函数(lambda 函数,map 函数,filter 函数,reduce 函数)
写在之前 今天给大家介绍几个比较特殊的函数,他们具有函数式编程的特点,有人将它们视为 Python 可进行 "函数式编程" 的见证,至于什么是函数式编程,不是本篇文章的重点,感兴趣 ...