在MongoDB中的ObjectID,可以理解为是一个不会重复的ID,这里有个链接http://www.jb51.net/article/101164.htm感兴趣可以去研究一下。

我今天要做的就是做一个不重复ID的生成器

  1. /**
  2. * 生成一个用不重复的ID
  3. */
  4. function GenNonDuplicateID():String{
  5.  
  6. }
  1. 先看看下面的几个方法
  2. .生成[,)的随机数的Math.random,例如
  3. //我这次运行生成的是:0.5834165740043102
  4. Math.random()
  5. .获取当前时间戳Date.now
  6. //现在时间戳是1482645606622
  7. Date.now()
  8. .将10进制转换为其他进制的字符串 Number.toString
  9. //将1482645606622转换成二进制:10101100100110100100100001001000011011110
  10. ().toString()
  11. //转换成16进制:159349090de MongDB中的ObjectID就是24位16进制数
  12. ().toString();
  13. //最大进制支持转为36进制,使用字符是0-9a-z :ix48wvry
  14. ().toString()
  1. GenNonDuplicateID 的自我进化
  1. 1. 随机数版本 v0.0.1
  1. /**
  2. * 生成一个用不重复的ID
  3. */
  4. function GenNonDuplicateID(){
  5. return Math.random().toString()
  6. }
  7.  
  8. //生成一个类似 0.1283460319177394的ID
  9. GenNonDuplicateID()

2. 随机数版本16进制版本 v0.0.2

  1. /**
  2. * 生成一个用不重复的ID
  3. */
  4. function GenNonDuplicateID(){
  5. return Math.random().toString()
  6. }
  7. //函数将生成类似 0.c1615913fa915 的ID
  8. GenNonDuplicateID()

3.随机数版本36进制版本 v0.0.3

  1. /**
  2. * 生成一个用不重复的ID
  3. */
  4. function GenNonDuplicateID(){
  5. return Math.random().toString()
  6. }
  7. //函数将生成类似 0.hefy7uw6ddzwidkwcmxkzkt9 的ID
  8. GenNonDuplicateID()

4.随机数版本36进制版本 去掉"0." v0.0.4

  1. /**
  2. * 生成一个用不重复的ID
  3. */
  4. function GenNonDuplicateID(){
  5. return Math.random().toString().substr()
  6. }
  7. //函数将生成类似 8dlv9vabygks2cbg1spds4i 的ID
  8. GenNonDuplicateID()

然而用一个随机数作为ID,随着使用次数的累积,必然会出现相同的两个ID

5.引入时间戳 的36微进制版本 v0.1.1

  1. /**
  2. * 生成一个用不重复的ID
  3. */
  4. function GenNonDuplicateID(){
  5. let idStr = Date.now().toString()
  6. idStr += Math.random().toString().substr()
  7. return idStr
  8. }
  9. //函数将生成类似 ix49sfsnt7514k5wpflyb5l2vtok9y66r 的ID
  10. GenNonDuplicateID()

6.引入时间戳 的36微进制版本 加入随机数长度控制 v0.1.2

  1. /**
  2. * 生成一个用不重复的ID
  3. */
  4. function GenNonDuplicateID(randomLength){
  5. let idStr = Date.now().toString()
  6. idStr += Math.random().toString().substr(,randomLength)
  7. return idStr
  8. }
  9. // GenNonDuplicateID(3) 将生成类似 ix49wl2978w 的ID
  10. GenNonDuplicateID()
 

这样生成的ID前面几位总是相同,看着不爽,于是再改改

7. 引入时间戳 随机数前置 36进制 加入随机数长度控制 v0.1.3

  1. /**
  2. * 生成一个用不重复的ID
  3. */
  4. function GenNonDuplicateID(randomLength){
  5. return Number(Math.random().toString().substr(,randomLength) + Date.now()).toString()
  6. }
  7. //GenNonDuplicateID()将生成 rfmipbs8ag0kgkcogc 类似的ID
  8. GenNonDuplicateID()
 

以上所述是小编给大家介绍的JS如何生成一个不重复的ID的函数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

转载:http://www.jb51.net/article/101163.htm

js 如何生成一个不重复的ID的函数的更多相关文章

  1. js生成一个不重复的ID的函数的进化之路

    在MongoDB中的ObjectID,可以理解为是一个不会重复的ID,这里有个链接http://blog.csdn.net/xiamizy/article/details/41521025感兴趣可以去 ...

  2. JavaScript生成一个不重复的ID

    /** * 生成一个用不重复的ID */ function GenNonDuplicateID():String{ } 先看看下面的几个方法 1.生成[0,1)的随机数的Math.random,例如 ...

  3. jQuery生成一个DIV容器,ID是"rating".

    我们需要一些服务器端代码,这个例子中用到了一个PHP文件,读取rating参数然后返回rating总数和平均数.看一下rate.php代码.虽然这些例子也可以不使用AJAX来实现,但显示我们不会那么做 ...

  4. 【PHP】php生成一个不重复的数字(订单号、会员号)

    1.目的:利用php的do .. while 生成一个不重复的字符串或者数组,比如(订单号.会员号) 2.不废话,代码来: $repeat_order = array(); do{ $ordersn ...

  5. PHP生成一个不重复随机数组的封装方法

    <?php /** array unique_rand( int $min, int $max, int $num )* 生成一定数量的不重复随机数* $min 和 $max: 指定随机数的范围 ...

  6. js随机生成一个数组中的随机字符串以及更新验证码

    随机生成m,n范围的值得公式: Math.random()*(n-m)+m: 改正公式:Math.random()*(n+1-m)+m // 生成随机字符串function randomMixed(n ...

  7. Java生成UUID不重复的id值

    在Java中创建UUID在网上查资料才知道在Java中,变成了UUID.创建方式也出奇简单System.out.println( java.util.UUID.randomUUID());

  8. JS实现生成一个周对应日期数组

    /* 获取日期和周 */ getDateWeek() {/* 得到当前日期的时间戳 */ const timestamp = Date.now() // const timestamp = new D ...

  9. js检查页面上有无重复id的代码分享

    用js代码检查一个页面上是否用重复的id. 方法一: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ...

随机推荐

  1. Win8如何默认以管理员运行程序

    在Win7的时候,关闭UAC,使用自己的用户名,所有程序都是默认以管理员身份运行的. 但是在Win8,关闭UAC,程序不是默认以管理员身份运行的. 在论坛看到的解决方法是:1.用Administrat ...

  2. el-upload控件一次接口请求上传多个文件

    el-upload组件默认情况下上传多少个文件就会请求多少次上传接口,如何一次上传多个文件而不必多次请求上传接口呢?直接看代码 html <el-upload :action="act ...

  3. react的Redux基础

    redux的中文文档:http://www.redux.org.cn/ redux的英文官网:https://redux.js.org/ redux相当于vuex Redux 是 JavaScript ...

  4. linux下安装redis和使用

    http://www.linuxidc.com/Linux/2014-05/101979.htm

  5. composer 类加载器,对 <PSR-4的风格>、<PSR-0的风格>、<PEAR的风格> 风格的类的加载

    class ClassLoader { // ... /** * composer 类加载器,对 <PSR-4的风格>.<PSR-0的风格>.<PEAR的风格> 风 ...

  6. 16,Python网络爬虫之Scrapy框架(CrawlSpider)

    今日概要 CrawlSpider简介 CrawlSpider使用 基于CrawlSpider爬虫文件的创建 链接提取器 规则解析器 引入 提问:如果想要通过爬虫程序去爬取”糗百“全站数据新闻数据的话, ...

  7. git---gui使用

    1.登陆的命令: git config –global user.email "1455971532@qq.com" git config –global user.name &q ...

  8. NopCommerce 导航菜单HTML静态处理以提高性能

    因网站要快速上线,有时候NopCommerce性能问题一直是困扰我们的最大因素,查找出来需要优化的部分代码进行修改重构是方法之一,我等非主流优化方式只为快速提高程序整体性能. 我以导航菜单为例,列出我 ...

  9. Python框架之Django学习笔记(十五)

    表单 从Google的简朴的单个搜索框,到常见的Blog评论提交表单,再到复杂的自定义数据输入接口,HTML表单一直是交互性网站的支柱.本次内容将介绍如何用Django对用户通过表单提交的数据进行访问 ...

  10. Python 拓展之特殊函数(lambda 函数,map 函数,filter 函数,reduce 函数)

    写在之前 今天给大家介绍几个比较特殊的函数,他们具有函数式编程的特点,有人将它们视为 Python 可进行 "函数式编程" 的见证,至于什么是函数式编程,不是本篇文章的重点,感兴趣 ...