Creating a simple Unique Booking ID function
本问题已经有最佳答案,请猛点这里访问。
我需要一个特别独特的预订ID,这是方便客户通过电话读出。
它应该有5个字符长,并且只使用这些字母:
1 | var letters ="ABCDEFGHJKMNPQRSTUXY"; |
我在stackoverflow上找到了这个函数,但是很难让它从我的字母中提取字符,并将自己限制为5个字符。
1 2 3 | var uniqueId = function() { return Math.random().toString(36).substr(2, 16); }; |
如有任何帮助,我们将不胜感激:—)
有些人打败了我,但这里有一个很容易阅读的替代方案。它还包含不允许两个连续字符相同的字符(如OP在后面的注释中添加的那样)
1 2 3 4 5 6 7 8 9 10 11 12 | 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); } |
请参见下面的函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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)); } |
像这样的东西
1 2 3 4 5 6 7 8 9 | var letters ="ABCDEFGHJKMNPQRSTUXY"; var uniqueId = function() { var text =""; for (var i = 0; i < 5; i++) { text += letters.charAt(Math.floor(Math.random() * letters.length)); } return text; }; console.log(uniqueId()); |
如果您想将唯一ID的数量增加一倍,请考虑大小写…
1 2 3 4 5 6 7 8 9 | var letters ="ABCDEFGHJKMNPQRSTUXYabcdefghjkmnpqrstuxy"; var uniqueId = function() { var text =""; for (var i = 0; i < 5; i++) { text += letters.charAt(Math.floor(Math.random() * letters.length)); } return text; }; console.log(uniqueId()); |