JavaScript 生成唯一标识

1. 使用 Math.random()

Math.random()方法可以生成一个随机数,因为它返回0到1之间的伪随机数,所以我们可以将其与当前的时间戳相乘,生成一个不太可能重复的唯一ID。

function generateUniqueID() {
  return Math.floor(Math.random() * Date.now()).toString(36);
}
进阶版
const getUUid = function () {
  var d = new Date().getTime()
  if (window.performance && typeof window.performance.now === 'function') {
    d += performance.now()
  }
  const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
    var r = (d + Math.random() * 16) % 16 | 0
    d = Math.floor(d / 16)
    return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16)
  })
  return uuid
}

2. 使用时间戳 + 机器码

通过当前时间戳和生成机器码合一起生成的唯一序列号,可以避免生成的唯一序列号重复的问题。

function generateUniqueID() {
    let date = (new Date()).valueOf();//获取时间戳
    let txt = '1234567890';//生成的随机机器码
    let len = 13;//机器码有多少位
    let pwd = '';//定义空变量用来接收机器码
    for (let i = 0; i < len; i++) {
        pwd += txt.charAt(Math.floor(Math.random() * txt.length));//循环机器码位数随机填充
    }
    return date + pwd
}

3. 使用时间戳 + 随机字母

获取时间戳后加上随机截取的字母,采用数字加字母的形式,获取唯一标识。

function algorithm() {
    let abc = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'g', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
    let [max, min] = [Math.floor(Math.random() * (10 - 7 + 1) + 1), Math.floor(Math.random() * (17 - 10 + 1) + 17)];
    abc = abc.sort(() => 0.4 - Math.random()).slice(max, min).slice(0, 8).join("");
    var a = new Date().getTime() + abc;
    return a
}

你可能感兴趣的:(javascript,前端,开发语言)