JavaScript。循环问题

标签 javascript

尝试创建一段代码,返回 1000 以下且为三的倍数的所有数字。这是相关的代码段。

  <script>
  var i = 1;
  var mplesOf3 = [0];
  var myNum = 0;
  while (myNum < 1000){
    (3 * i) = myNum;
    mplesOf3.push(myNum);
    i++;
  };
  alert(mplesOf3);
  </script>

代码在 html 页面中运行,因此有样式标签和警报。

代码基本上尝试执行 3x1 然后 3x2 然后 3x3 等等,直到结果超过 1000。我几天前就提出了这个概念,但我仍然不确定为什么它不能正常运行。

根据记录,我已经看到了如何执行此操作的其他解决方案,但因为我正在学习并想要改进,所以我想知道为什么这个解决方案不起作用。

提前谢谢

编辑:我应该知道这个错误是愚蠢的。我在伪代码上写了 (3 x 1) = n 但没有发现错误,因为我觉得没有什么问题。感谢各方,我会尽可能接受答复。

最佳答案

您的 JavaScript 引擎应该告诉您有语法错误(如果您使用的是浏览器,请查看 Web 控制台)。您不能使用类似 (3 * i) 的表达式在作业的左侧。在 JavaScript 中,= 右边的东西被评估,并分配给左边的东西。

您的算法也会导致 1002 被推送,因为您没有测试设置 myNum = 3 * i 的结果直到插入后

坚持原来的算法,但修复这两件事:

var i = 1;
var mplesOf3 = [0];
var myNum;
while ((myNum = 3 * i) < 1000){
  mplesOf3.push(myNum);
  i++;
} // Note: No semicolon here, you don't put semicolons after blocks
  // attached to control-flow statements
console.log(mplesOf3);

这一点:

while ((myNum = 3 * i) < 1000){

评估3 * i ,将结果赋给 myNum ,然后检查该值是否为 < 1000。

也就是说,使用 for 可能会更简单(更少的变量,更少的乘法)和myNum += 3在增量部分:

var mplesOf3 = [0];
var myNum;
for (var myNum = 3; myNum < 1000; myNum += 3) {
  mplesOf3.push(myNum);
}
console.log(mplesOf3);

也没有特别好的理由对 0 进行特殊处理。像这样,所以我可能最初会将其排除在数组之外并从 0 开始计数:

var mplesOf3 = [];
var myNum;
for (var myNum = 0; myNum < 1000; myNum += 3) {
  mplesOf3.push(myNum);
}
console.log(mplesOf3);

关于JavaScript。循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52932008/

相关文章:

javascript - 从 Slack 自动打开链接

javascript - 将循环变量调用到自动完成选择中

javascript - JS/jQuery 返回相关 TD 的 TH,可能吗?

javascript - 创建查询(连接)或纠正设计?

javascript - jquery 查找文本框

javascript - 以 props 和 state 作为参数的 React 类组件渲染函数

javascript - 为 Slick Slider 克隆额外的幻灯片

javascript - Rails 每个循环中的 JQuery 错误(未捕获的 ReferenceError : $ is not defined)

javascript - 禁用 swiper.js 的鼠标滚轮去抖动

php - 包含填充数据的多选列表