【问题标题】:Challenge JavaScript for kids. Chapter 6. What is correct answer为孩子们挑战 JavaScript。第 6 章 什么是正确答案
【发布时间】:2017-11-03 04:30:44
【问题描述】:

在第 6 章末尾的“儿童 JavaScript”一书中,有一个挑战是从 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循环都可以写成while循环。
  • 是的,你总是可以做到的。只需将 for 循环的不同部分分开即可。 var i = 0; while (i &lt; stringLength) { i++; }
  • 或:while(randomString.length &lt; stringLength) { // stuff }
  • 感谢您的帮助!这回答了我的问题!
  • 我想知道什么人认为这个问题“显示了研究成果”。

标签: javascript for-loop while-loop


【解决方案1】:

每个for 循环都可以写成while 循环。通常,您的for 循环描述符具有三个表达式:初始化、条件和某种增量。我们称这些为abc

然后这个:

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

相当于:

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

注意:使用let 时可能会有细微差别。

【讨论】:

  • 谢谢,它让我更好地了解了我迷路的地方。
【解决方案2】:

当然,但您必须自己设法增加循环计数器:

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

恕我直言,for 循环在这里更合适。

【讨论】:

  • 不一定,可以查看randomString.length
  • 可能值得指出的是,如果您希望 while 的行为与 for 相同,则 i++; 应该是循环的最后执行语句
  • 感谢您的帮助!
【解决方案3】:

是的,如果您以正确的方式实施,您也可以这样做。检查 randomString.length 并将其与您选择的 stringLength 进行比较。

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

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

console.log(randomString);

【讨论】:

  • 谢谢你就是这样。
猜你喜欢
  • 2010-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-13
  • 1970-01-01
  • 1970-01-01
  • 2018-07-07
  • 1970-01-01
相关资源
最近更新 更多