在JavaScript

时间:2016-07-27 18:02:31

标签: javascript random

这个问题不同于从字符串中取出随机字母,因为我不是要从字符串中删除任何内容。

我试图使用Math.floor(Math.random()* string.length)和while循环从JavaScript中的字符串中选择一个随机字母。它需要不断向该字符串添加新的随机字母,直到达到指定的长度。

我的代码是:

var emptyString = "";
var alphabet = "abcdefghijklmnopqrstuvwxyz";
var getRandomLetter = alphabet[Math.floor(Math.random() * alphabet.length)];
var randomLetter = getRandomLetter;

while (emptyString.length < 6) {
emptyString += randomLetter;
emptyString ++;
} 
console.log(emptyString);

问题: 输出是相同的字母6次:ex。 PPPPPP

随机字母仅从字符串生成一次,然后重复直到指定的长度。我需要它为每个字母生成随机输出:ex。 pwezjm

我还注意到,如果我在字符串上执行第二个不同的while循环,它将生成与第一个循环相同的输出:ex。 pppppp

我认为它至少会产生一个不同的随机字母,然后是第一个循环,但事实并非如此。那是为什么?

4 个答案:

答案 0 :(得分:8)

因为你每次都应该获得这封信,但你只需要一次。

var emptyString = "";
var alphabet = "abcdefghijklmnopqrstuvwxyz";

while (emptyString.length < 6) {
  emptyString += alphabet[Math.floor(Math.random() * alphabet.length)];
} 
console.log(emptyString);

另外,不确定你想要用emptyString++实现什么,删除它,因为++是“递增一个”运算符,你不能增加一个字符串。我认为目的是让它作为while循环的计数器,但它是不必要的,因为计数器已经是字符串长度。

答案 1 :(得分:3)

获取loop

中的随机字符

在您的示例中,您只从数组中获取一次随机字符,因此您无法在while loop中获得另一个随机字符

另请注意,emptyString++会导致结果为NaN,因为您尝试后期增加string

var emptyString = "";
var alphabet = "abcdefghijklmnopqrstuvwxyz";

while (emptyString.length < 6) {
  emptyString += alphabet[Math.floor(Math.random() * alphabet.length)];
}
console.log(emptyString);

另一个提示alphabet.length可以缓存,而不是每次while

都要求它

答案 2 :(得分:2)

虽然上述内容很好。我喜欢更短的代码。

const randomLetter = ('abcdefghijklmnopqrstuvwxyz').split('')[(Math.floor(Math.random() * 26 ))];

答案 3 :(得分:0)

您需要将getRandomLetter更改为一个函数,并在循环中重新分配randomLetter,如下所示:

&#13;
&#13;
var emptyString = "";
var alphabet = "abcdefghijklmnopqrstuvwxyz";
function getRandomLetter() {
  return alphabet[Math.floor(Math.random() * alphabet.length)];
}
var randomLetter;

while (emptyString.length < 6) {
  randomLetter = getRandomLetter();
  emptyString += randomLetter;
} 
console.log(emptyString);
&#13;
&#13;
&#13;

您也无法增加emptyString,因为它是一个字符串。