This question is different from Take random letters out from a string because I am not trying to remove anything from the string.
I'm trying to pick a random letter from a string in JavaScript using Math.floor(Math.random()* string.length) and a while loop. It needs to continually add new random letters to this string until a specified length.
My code is:
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);
Problems: The output is the same letter 6 times: ex. pppppp
The random letter is generated from the string only once and then repeated until the specified length. I need it to generate random output for each letter: ex. pwezjm
I also noticed that if I do a second different while loop over the string it will generate the same output as the first loop: ex. pppppp
I thought it would at least generate a different random letter then the first loop but it does not. Why is that?
While those above are nice. I like shorter code.
Get the random character in a
loop
In your example, you are obtaining random character from array only once hence there is no way you are going to get another random character in
while loop
Also note that
emptyString++
will cause result asNaN
as you are trying to post-increment thestring
Another tip,
alphabet.length
could be cached instead of asking for it every time inwhile
Because you should obtain the letter every time, but you do it just once.
Also, not sure what you wanted to achieve with
emptyString++
, removing that, since++
is the "increment by one" operator and you can't incremenent a string. I think the purpose was to have it as a counter for that while loop, but it's needless, since the counter is the string length already.You need to change
getRandomLetter
into a function, and reassignrandomLetter
inside the loop like this:You also can't increment
emptyString
, since it is a string.