Angular / JS 生成随机唯一序列号

Angular / JS generate random Uniq Serial ID

我正在创建一个函数,通过用这种格式替换字符串来生成随机 Uniq 序列号; xxxx-xxxx-xxxx-xxxx ,目标是获得这样的序列号:A​​BCD-1234-EFGH-5678 ,第一和第三部分是字母,第二和最后部分是数字,这是我的代码:

public generateUniqSerial() {
   return 'xxxx-xxxx-xxx-xxxx'.replace(/[x]/g, function (c) {
     let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8)
     return v.toString(16)
   })
 }

它给出这样的结果:"7f8f-0d9a-fd5-450f" ,如何编辑此函数以获得此格式的结果:ABCD-1234-EFGH-6789?

您可以这样做来生成一个随机的唯一序列号,其格式类似于 ABCD-1234-EFGH-5678:

function rnd(t) {
  let str = '';
  const min = t === 'a' ? 10 : 0;
  const max = t === 'n' ? 10 : 62;
  for (let i = 0; i++ < 4;) {
    let r = Math.random() * (max - min) + min << 0;
    str += String.fromCharCode(r += r > 9 ? r < 36 ? 55 : 61 : 48);
  }
  return str;
}

function generateUniqSerial() {
  return `${rnd('a')}-${rnd('n')}-${rnd('a')}-${rnd('n')}`
}

console.log(generateUniqSerial())
console.log(generateUniqSerial())

"This is not a code-writing service," 但是当我被要求做这样的事情时,我喜欢从 "string of letters" 和 "string of digits." 开始,然后我的逻辑只是选择一个随机索引到适当的源字符串来获取我需要的每个字符。我喜欢这样做,因为对我来说,这就是我正在做的 "extremely obvious",而且同样容易进行桌面检查它是否有效。