Javascript GUID(全局唯一标识符)生成器说明

弹跳

我正在尝试为 8 个字符编写 JavaScript GUID 生成器,包括小写/大写字母、数字和符号。我找到了这些解决方案,但需要对每个解决方案中发生的事情进行解释。最初我认为我需要一个包含所有字母/数字/符号的字符串,我将使用随机数函数对其进行索引以构建新的 GUID,但这些解决方案似乎是凭空创建数字/字母/符号。

在解决方案1中,“1+”和“0x10000”的目的是什么?“.toString(16)”和“.substring(1)”的目的是什么,它是如何用那一点代码生成数字/符号/AND字母的?

解决方案1:

function guid() {
  function s4() {
    return Math.floor((1 + Math.random()) * 0x10000)
      .toString(16)
      .substring(1);
  }
  return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
    s4() + '-' + s4() + s4() + s4();
}

在解决方案 2 中,我看到 GUID 的长度是 32 个字符,但不明白为什么 Math.Random 被专门乘以“16”,这次附加了 toString(16) 但没有“.substring(x)”?

解决方案2:

function generateGuid() {
  var result, i, j;
  result = '';
  for(j=0; j<32; j++) {
    if( j == 8 || j == 12|| j == 16|| j == 20) 
      result = result + '-';
    i = Math.floor(Math.random()*16).toString(16).toUpperCase();
    result = result + i;
  }
  return result;
}

无需解释 GUID 的结构,也无需解释连字符是 XD

任何和所有详细的解释表示赞赏!

奇迹308

在第二种情况下,Math.random() 会生成一个介于 0(包含)到 1(不包含)之间的数字。
现在,如果我想要一个应该小于 16 的数字,将 16 与 [0, 1) 中的值相乘应该对我有用,toString(16) 会将其转换为基数为 16 的数字。我们总共添加 32 个这样的数字

第一个示例生成一个介于 (1.0, 2.0] 之间的数字,并将其乘以 (10^4) 以 16 为底。现在我们有一个范围为 (10000, 20000] 以 16 为底的数字。

取最后 4 位数字对我们来说就足够了,所以我们从中取出相关的子串。
既然如此我认为

Math.floor((Math.random()) * 0x10000)
  .toString(16)

对于该解决方案也足够了,因为我们需要一个 4 位的十六进制数

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

构建唯一标识符生成器的最佳方法

来自分类Dev

Javascript 唯一随机数生成器未生成唯一数字

来自分类Dev

javascript中的对象是否有唯一标识符?

来自分类Dev

使用MongoDB“ $ in”运算符的Javascript查询生成器

来自分类Dev

生成简短的唯一标识符

来自分类Dev

生成简短的唯一标识符

来自分类Dev

函数生成器javascript

来自分类Dev

递归生成器Javascript

来自分类Dev

Javascript名称生成器

来自分类Dev

实现定义的标识符的JavaScript约定

来自分类Dev

Javascript多行意外标识符

来自分类Dev

JavaScript-意外的循环标识符

来自分类Dev

Javascript Uncaught SyntaxError:意外的标识符

来自分类Dev

JavaScript错误:意外标识符

来自分类Dev

JavaScript 变量语法:意外的标识符

来自分类Dev

JavaScript 意外标识符 Highcharts

来自分类Dev

如何重新编码我的jquery / javascript函数,使其更通用并且不需要唯一标识符?

来自分类Dev

在Mocha中使用JavaScript生成器

来自分类Dev

了解JavaScript中的生成器

来自分类Dev

JavaScript生成器样式的异步

来自分类Dev

Javascript生成器:了解它们

来自分类Dev

Javascript生成器:了解它们

来自分类Dev

哪个MEAN生成器-JavaScript

来自分类Dev

JavaScript随机报价生成器

来自分类Dev

JavaScript密码生成器数值问题

来自分类Dev

JavaScript生成器样式的异步

来自分类Dev

在Mocha中使用JavaScript生成器

来自分类Dev

JavaScript随机数生成器

来自分类Dev

JavaScript随机报价生成器