Испытайте JavaScript для детей. Глава 6. Какой правильный ответ

1

В книге "JavaScript для детей" в конце главы 6 есть эта задача создать генератор случайных строк, из букв, выведенных из var alphabet = "abcdefghijklmnopqrstuvwxyz"; В книге автор спрашивает, как использовать цикл WHILE, который я не смог сделать.

Чем я узнал, что правильный ответ требует цикла FOR и идет следующим образом:

var alphabet = "abcdefghijklmnopqrstuvwxyz";
var randomString = "";
var stringLength = 6;

for (var i = 0; i < stringLength; i++) {
  randomString += alphabet[Math.floor(Math.random() * alphabet.length)];
}

console.log(randomString);

мой вопрос: можно ли сделать то же самое с циклом WHILE?

Теги:
for-loop
while-loop

3 ответа

3

Каждый for цикла может быть записана как в while цикла. В целом ваши for дескриптора контура имеет три выражения: инициализация, условие и какое - то шаг. Позвольте называть эти a, b и c.

Тогда это:

for (a; b; c) {
    // ...
}

эквивалентно:

a;
while (b) {
    // ...
    c;
}

NB: Там могут быть тонкие различия, когда let используется.

  • 0
    Спасибо, это дает мне лучшее понимание, где я был потерян.
  • 0
    Пожалуйста ;-)
1

Конечно, но вам придется управлять увеличением цикла:

var i = 0;
while (i < stringLength) {
  randomString += alphabet[Math.floor(Math.random() * alphabet.length)];
  i++;
}

ИМХО, здесь более подходит цикл for.

  • 0
    Не обязательно, вы можете проверить на randomString.length
  • 0
    Вероятно, стоит отметить, что если вы хотите, чтобы некоторое while вел себя так же, как for i++; должен быть последним выполненным оператором цикла
Показать ещё 1 комментарий
1

Да, вы можете сделать то же самое, если вы его правильно реализуете. Проверьте на randomString.length и сравните его с выбранной вами строкойLength.

var alphabet = "abcdefghijklmnopqrstuvwxyz";
var randomString = "";
var stringLength = 6;

while(randomString.length < stringLength){
  randomString += alphabet[Math.floor(Math.random() * alphabet.length)];
}

console.log(randomString);
  • 0
    Спасибо, что это было именно так.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню