Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Cannot break out of the while loop even when condition failed

const range = (start, stop, step) =>
  Array.from({ length: (stop - start) / step + 1 }, (_, i) => start + i * step);
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from

var passwordLength = window.prompt('Please choose a password length between 8 and 128 characters:');

const valid_lengths = range(8,128,1);
// Gives: [8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128]

while ( !valid_lengths.includes(passwordLength) ){

  var passwordLength = window.prompt('Invalid input.  Please try again.  Please input a password length that is an integer between 8 and 128 characters:');

}

console.log("The valid passwordLength is: " + passwordLength);

It seems that the code cannot break out of the while loop even if the user enters a passwordLength that is included in the array, such as 33, (when the while condition fails, we expect the code to break out of the while loop). Where is my logic failing here?

I have tried inputs to the passwordLength prompt that are both included 8, 33, 44, 120, and not included 1, 0, 150, in the given array – but the while loop persists regardless.

Edit: to clarify – the prompt is for a password generator, where the user is telling the website how long they would like their randomly generated password to be.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

The return value of window.prompt is string.
( https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt#return_value )

Therefore, you need to cast it to number.

For example,

var passwordLengthStr = window.prompt('...');
var passwordLength = parseInt(passwordLengthStr);
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading