【问题标题】:Generate unique random alphanumeric using javascript使用 javascript 生成唯一的随机字母数字
【发布时间】:2014-05-22 05:11:45
【问题描述】:

代码:

function alphanumeric()

{

var randomnum=Math.random().toString(36).substr(2,8);

document.getElementbyId("textBoxId").value = randomnum;

}

每次我调用 alphanumeric() 函数时,这将生成字母数字随机字符串并显示在文本框上,如.. v3ta4t8l,zshqoc2u,9pey71rb...工作正常.. 在我的要求中,我只需要允许唯一的字母数字。你能帮我解决我下面的问题吗,

1.是否只生成唯一的字母数字?

2.这会生成多少个字母数字?

3.是否可以只允许唯一的字母数字?

4.在我的情况下,可以在数据库中使用主键存储唯一的字母数字,我的列已经有一个主键,所以我将尝试使用 java 脚本来实现...

【问题讨论】:

  • 你听说过 GUID 吗?
  • 对不起..我对此不太了解...
  • 我已经查看了答案和您的问题,但我不确定您所说的独特是什么意思。当您重复调用alphanumeric() 时,您希望在一个字符串中没有重复的字符,还是希望发出一系列唯一的字符串?
  • 我不需要显示任何重复的相同值...抱歉给您带来不便...

标签: javascript random


【解决方案1】:

这里的东西只会返回唯一的字母数字

function alphanumeric_unique() {
    return Math.random().toString(36).split('').filter( function(value, index, self) { 
        return self.indexOf(value) === index;
    }).join('').substr(2,8);
}

FIDDLE

将字符串拆分为一个字符数组,然后使用Array.filter() 过滤掉数组中已经存在的任何字符以获取每个字符的一个实例,然后最后将字符连接回一个字符串,然后运行substr(2, 8) 获取与问题中相同长度的字符串,它从第二个字符开始,总共有八个字符。

【讨论】:

  • 谢谢..adeneo...你能告诉我,这会产生多少个字母数字?
  • @user3333029 - 它通常与原始函数一样多,因为它在删除重复的字母数字后使用 substr()。
  • 再次感谢... adeneo... 让我知道您能否请一些关于此代码的文本。我是初学者。希望对我更有帮助...
【解决方案2】:
 function IDGenerate() {
        var text = "";
        var hdntxt = "";
        var captchatext = "";
        var possible = "ABCDEFGHIkLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
        for (var i = 0; i < 7; i++) {
            text += possible.charAt(Math.floor(Math.random() * possible.length));         
        }

        document.getElementById("txtboxID").value = text;
        return false;
    }

【讨论】:

  • 用完后不需要splicepossible中用过的字符去掉吗?
  • 为此我们应该只使用系统 GUID。每次生成数据库时都要检查数据库是非常糟糕的主意,否则我们可以保留一些格式,如时间+用户名,它也会创建唯一性。时间可以在 Javascript 中获取,如果用户登录会话值可以在 Javascript 中获取。两者都可以结合并继续追求独特性。
猜你喜欢
  • 2011-08-18
  • 1970-01-01
  • 2018-05-03
  • 1970-01-01
  • 1970-01-01
  • 2015-07-29
  • 2011-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多