Javascript 如何在vue中生成预订代码?

Javascript 如何在vue中生成预订代码?,javascript,vue.js,vuejs2,vue-component,unique-key,Javascript,Vue.js,Vuejs2,Vue Component,Unique Key,我试着这样: methods: { generateCode () { const letters = '1217CHELS323412eafoo' const uniqueId = function () { let text = '' for (let i = 0; i < 6; i++) { text += letters.charAt(Math.floor(Math.random() * lette

我试着这样:

methods: {
    generateCode () {
      const letters = '1217CHELS323412eafoo'
      const uniqueId = function () {
        let text = ''
        for (let i = 0; i < 6; i++) {
          text += letters.charAt(Math.floor(Math.random() * letters.length))
        }
        return text
      }
      return uniqueId()
    }
}
方法:{
生成代码(){
常量字母='1217CHELS323412eafoo'
const uniqueId=函数(){
让文本=“”
for(设i=0;i<6;i++){
text+=letters.charAt(Math.floor(Math.random()*letters.length))
}
返回文本
}
返回唯一ID()
}
}
一些结果示例::
L1LE3C
o23H1f
HeLe34


这个代码完美吗?我的意思是,每次调用此方法时,它肯定会生成一个唯一的预订代码

您几乎没有选择的字母,而且您只生成6个字符的代码,我制作了一个简单的脚本来检查您需要生成多少次代码,直到它与
LS73ea

12787899 times
20141743 times
31479934 times
18819863 times
30361586 times
5533616 times
6495725 times
13431128 times
29765633 times
18367311 times
这是一个相当高的复制机会

我不明白为什么在
字母中包含相同的字符。相反,可以这样做:

方法:{
生成代码(){
//字母数字
常量字符='abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz1234567890'
const uniqueId=函数(){
让文本=“”
for(设i=0;i<8;i++){
text+=characters.charAt(Math.floor(Math.random()*characters.length))
}
返回文本
}
返回唯一ID()
}
}
该函数将生成类似于
HrsK9wgF
的代码,并且复制的可能性更小,如果您想使其更低,还可以:

  • 在字母选择中添加更多字符,如symbol(
    -
  • 增加生成的代码长度
  • 作为参考,Youtube的视频id使用了
    A-Z
    A-Z
    0-9
    -
    来选择字符,长度为11个字符


    除此之外,您确定要在前端应用程序上生成ID吗?它似乎应该在你的后端应用程序上生成。

    你几乎没有字母选择,而且你只生成6个字符的代码,我制作了一个简单的脚本来检查你需要生成多少次代码,直到它与
    LS73ea

    12787899 times
    20141743 times
    31479934 times
    18819863 times
    30361586 times
    5533616 times
    6495725 times
    13431128 times
    29765633 times
    18367311 times
    
    这是一个相当高的复制机会

    我不明白为什么在
    字母中包含相同的字符。相反,可以这样做:

    方法:{
    生成代码(){
    //字母数字
    常量字符='abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz1234567890'
    const uniqueId=函数(){
    让文本=“”
    for(设i=0;i<8;i++){
    text+=characters.charAt(Math.floor(Math.random()*characters.length))
    }
    返回文本
    }
    返回唯一ID()
    }
    }
    
    该函数将生成类似于
    HrsK9wgF
    的代码,并且复制的可能性更小,如果您想使其更低,还可以:

  • 在字母选择中添加更多字符,如symbol(
    -
  • 增加生成的代码长度
  • 作为参考,Youtube的视频id使用了
    A-Z
    A-Z
    0-9
    -
    来选择字符,长度为11个字符


    除此之外,您确定要在前端应用程序上生成ID吗?它似乎应该在您的后端应用程序上生成。

    我建议使用。很容易集成,重复项的变化小得多。这不确定它是否会生成唯一的ID。您可以添加时间并将其散列。或者,在使用数据库之前,您可以检查生成的代码是否已经在数据库中生成。@Player1如果我必须检查数据库,最好在数据库中生成它backend@Luke好的,我会检查的,我建议你用。很容易集成,重复项的变化小得多。这不确定它是否会生成唯一的ID。您可以添加时间并将其散列。或者,在使用数据库之前,您可以检查生成的代码是否已经在数据库中生成。@Player1如果我必须检查数据库,最好在数据库中生成它backend@Luke好的,我将检查
    const letters='1217chels32341eafoo'
    是否取自用户的输入。它是预订日期、电子邮件、手机和卡号的组合。因此,我必须将其更改为
    常量字母='abcdefghijklmnopqrstuvwxyz\u abcdefghijklmnopqrstuvwxyz-1234567890'
    ?如果您希望包含
    -
    ,或者您可以使用
    abcdefghijjklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz1234567890
    ,并将生成的代码变长,比如10或11个字符。我是否需要
    var timestamp=new Date().getutcmillesons()如下:?这完全取决于您的使用情况,如果您希望在预订代码中包含日期/时间,那么您可以添加该日期/时间,并将其与当前方法混合,因此代码将如下所示
    20200630a1b2c3d4
    (将日期30-06-2020与随机字母数字混合),但是,如果您只是想要一个随机的唯一代码,并且希望确保没有重复的代码,那么生成至少8个字符长度的字母数字就足够了,谢谢。似乎我会使用这个:
    const-letters='abcdefghijklmnopqrstuvxyz_abcdefghijklmnopqrstuvxyz-1234567890'
    const-letters='1217CHELS323412eafoo'
    是从用户的输入中获取的。它是预订日期、电子邮件、手机和卡号的组合。因此,我必须将其更改为
    常量字母='abcdefghijklmnopqrstuvwxyz\u abcdefghijklmnopqrstuvwxyz-1234567890'
    ?如果您希望包含
    -
    ,或者您可以使用
    abcdefghijjklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz1234567890
    ,并将生成的代码变长,比如10或11个字符。我是否需要
    var timestamp=new Date().getutcmillesons()