4

我一直在使用这段代码:

function stringGen()
{
    var text = " ";

    var charset = "abcdefghijklmnopqrstuvwxyz0123456789";

    for( var i=0; i < len; i++ )
        text += charset.charAt(Math.floor(Math.random() * charset.length));

    return text;
}

但到目前为止,它还没有起作用,就像根本一样。我究竟做错了什么?

提前谢谢你的帮助

4

4 回答 4

27

你错过了参数len

function stringGen(len) {
  var text = "";
  
  var charset = "abcdefghijklmnopqrstuvwxyz0123456789";
  
  for (var i = 0; i < len; i++)
    text += charset.charAt(Math.floor(Math.random() * charset.length));
  
  return text;
}

console.log(stringGen(3));

这会给你类似“a1z”的东西。

于 2013-04-19T14:16:15.800 回答
10

一个漂亮的单线将是:

Math.random().toString(36).substr(2, length)

或者,如果您需要一个长度超过 10/11 个字符的 str:

function generateRandAlphaNumStr(len) {
  var rdmString = "";
  for( ; rdmString.length < len; rdmString  += Math.random().toString(36).substr(2));
  return  rdmString.substr(0, len);

}
于 2014-04-21T12:21:54.307 回答
2

作为替代方案:

var len = 20,
    str = '';

while( len-- ) {
    str += String.fromCharCode( 48 + ~~(Math.random() * 42) );
}

console.log( str );
于 2013-04-19T14:22:52.250 回答
0

您的 len 变量未定义。要么将其作为参数传递,要么将其设置为某个值。

function stringGen(len)
{
    var text = " ";

    var charset = "abcdefghijklmnopqrstuvwxyz0123456789";

    for( var i=0; i < len; i++ )
        text += charset.charAt(Math.floor(Math.random() * charset.length));

    return text;
}
alert(stringGen(5));

http://jsfiddle.net/rg7Z3/

于 2013-04-19T14:17:18.367 回答