Javascript 创建一个简单的唯一预订ID函数

Javascript 创建一个简单的唯一预订ID函数,javascript,Javascript,我需要一个特殊的独特的预订ID,这是很容易为客户通过电话读出 长度应为5个字符,且仅使用以下字母: var letters = "ABCDEFGHJKMNPQRSTUXY"; 我在stackoverflow上找到了这个函数,但很难让它从我的信件中提取字符,并将其自身限制为5个字符 var uniqueId = function() { return Math.random().toString(36).substr(2, 16); }; 任何帮助都将不胜感激:-诸如此类的东西 var字

我需要一个特殊的独特的预订ID,这是很容易为客户通过电话读出

长度应为5个字符,且仅使用以下字母:

var letters = "ABCDEFGHJKMNPQRSTUXY";
我在stackoverflow上找到了这个函数,但很难让它从我的信件中提取字符,并将其自身限制为5个字符

var uniqueId = function() {
  return Math.random().toString(36).substr(2, 16);
};
任何帮助都将不胜感激:-

诸如此类的东西

var字母=ABCDEFGHJKMNPQRSTUXY; var uniqueId=函数{ var text=; 对于变量i=0;i<5;i++{ text+=letters.characterMath.floorMath.random*letters.length; } 返回文本; }; console.loguniqueId 像这样的

var字母=ABCDEFGHJKMNPQRSTUXY; var uniqueId=函数{ var text=; 对于变量i=0;i<5;i++{ text+=letters.characterMath.floorMath.random*letters.length; } 返回文本; }; console.loguniqueId 请参见下面的函数,uniqueId对于一个由五个字符组成的字符串,函数可能会多次生成相同的字符串,因此它不是唯一的:

function uniqueId(stringLength, possible)
{
  stringLength = stringLength || 5;
  possible = possible || "ABCDEFGHJKMNPQRSTUXY";
  var text = "";

  for(var i = 0; i < stringLength; i++) {
    var character = getCharacter(possible);
    while(text.length > 0 && character === text.substr(-1)) {
      character = getCharacter(possible);
    }
    text += character;
  }

  return text;
}

function getCharacter(possible) {
  return possible.charAt(Math.floor(Math.random() * possible.length));
}
请参见下面的函数,uniqueId对于一个由五个字符组成的字符串,函数可能会多次生成相同的字符串,因此它不是唯一的:

function uniqueId(stringLength, possible)
{
  stringLength = stringLength || 5;
  possible = possible || "ABCDEFGHJKMNPQRSTUXY";
  var text = "";

  for(var i = 0; i < stringLength; i++) {
    var character = getCharacter(possible);
    while(text.length > 0 && character === text.substr(-1)) {
      character = getCharacter(possible);
    }
    text += character;
  }

  return text;
}

function getCharacter(possible) {
  return possible.charAt(Math.floor(Math.random() * possible.length));
}

好吧,有些人刚刚打败了我,但这里有一个选择,是相当容易阅读。它还包括不允许2个连续字符与OP在随后的评论中添加的字符相同

 function uniqueId()
 {
        var letters = "ABCDEFGHJKMNPQRSTUXY";
        var result="";
        while (result.length<5)
        {
            var rand_int = Math.floor((Math.random() * 19) + 1);
            var rand_chr= letters[rand_int];
            if (result.substr(-1, 1)!=rand_chr) result+=rand_chr;
        }
        return (result);
 }

好吧,有些人刚刚打败了我,但这里有一个选择,是相当容易阅读。它还包括不允许2个连续字符与OP在随后的评论中添加的字符相同

 function uniqueId()
 {
        var letters = "ABCDEFGHJKMNPQRSTUXY";
        var result="";
        while (result.length<5)
        {
            var rand_int = Math.floor((Math.random() * 19) + 1);
            var rand_chr= letters[rand_int];
            if (result.substr(-1, 1)!=rand_chr) result+=rand_chr;
        }
        return (result);
 }


为什么只有5个?您将自己限制为少量的唯一订单。除非你希望保持小规模?见小规模。。试着计算一下20x20x20x20x20:-D如果我有那么多的预订,我保证将其扩展到6个字符:-D检查我链接的副本我可以在芭堤雅免费住宿吗?:D@torbenrudgaard编辑您的帖子以添加此要求。我看了你的个人资料他为什么只有5个人?您将自己限制为少量的唯一订单。除非你希望保持小规模?见小规模。。试着计算一下20x20x20x20x20:-D如果我有那么多的预订,我保证将其扩展到6个字符:-D检查我链接的副本我可以在芭堤雅免费住宿吗?:D@torbenrudgaard编辑您的帖子以添加此要求。我看了你的个人资料heheis有办法避免两个相同的字母并排出现吗?ABCAB正常-ABBCD不正常。是的,请参阅更新。完美正是我所需要的-Ganhamar你刚刚进入我们的全球函数库:-谢谢。@torbenrudgaard失败者有免费的芭堤雅之旅吗?:有没有办法避免两个相同的字母并排出现?ABCAB正常-ABBCD不正常。是的,请参阅更新。完美正是我所需要的-Ganhamar你刚刚进入我们的全球函数库:-谢谢。@torbenrudgaard失败者有免费的芭堤雅之旅吗?:有没有办法避免两个相同的字母并排出现?ABCAB可以-ABBCD不行。像这个例子可以解决这个问题-因为演示只使用AB字母-现在考虑到检查字母-检查索引也可能是一种可能性-有没有办法避免两个相同的字母并排出现?ABCAB是可以的-ABBCD不是。像这个例子可以解决这个问题-因为演示只使用AB字母-现在考虑到检查字母-检查索引也可以