努力理解这个 for 循环是如何工作的

时间:2021-03-04 22:45:32

标签: javascript arrays for-loop

在 Code Academy 上遇到了这个 for 循环问题,但无法弄清楚总数是如何达到 23 的。如果有人能帮我解决这个问题,我将不胜感激。

const values = [1, 10, 4, 3, 15, 3, 5, 2];

let total = 100;

for (let i = values.length - 2; i >= 0; i -= 2) {
  let a = values[i];
  total /= a;
  total += 10;
}

console.log(total); 

3 个答案:

答案 0 :(得分:0)

在阅读此内容时,您可能会遗漏一些内容。首先,您一次递减 2。其次,索引从 0 开始,所以 6 的索引实际上是数组的第 7 个元素。 /= 运算符将值相除并将结果保存在变量中。 += 运算符添加到值并将结果保存在变量中。只要您了解所有这些要点,您就应该能够自己解决这个问题,我建议您这样做。如果您需要帮助,可以参考以下内容,但我恳请您自己尝试。

最初,i = 6

第一次迭代:

i is 6;
values[6] is 5;
total /= 5 is 20;
logs(20);
total += 10 is 30;

第二次迭代:

i is 4;
values[4] is 15;
totals /= 15 is 2;
logs(2);
total += 10 is 12;

第三次迭代:

i is 2;
values[2] is 4;
totals /= 4 is 3;
logs(3);
total += 10 is 13;

最终迭代:

i is 0;
values[0] is 1;
totals /= 1 is 13;
logs(13);
total += 10 is 23;

循环后:

logs(23);

答案 1 :(得分:0)

定义了第一个数组 values 和变量 total

// `const` because it won't change after the initial assignment
const values = [1, 10, 4, 3, 15, 3, 5, 2];

// `let` because it will be changed
let total = 100;

然后创建一个for循环

for (let i = values.length - 2; i >= 0; i -= 2)

由三部分组成 -

  • let i = values.length - 2 - 在 for 循环开始时只运行一次的初始步骤
    • 它创建了变量 i
    • 然后分配 values 数组的长度减去 2
  • i >= 0 - 条件 - 在每次迭代之间检查什么,如果它是假的,循环结束。这里检查 i 是否小于或等于零。
  • i -= 2 - 这是它在每次迭代后所做的 - 这里它使 i 的值下降 2(使用 -= 运算符,其作用与 {{1} })

在每次迭代时,局部变量 i = i - 2 都会被分配到 a 数组内当前 i 的索引上的任何值。

values

然后将 total 分配给它的值除以 // if `i` would be 2 in this iteration then `a` would be assigned 4 // because it counts from 0 let a = values[i]; ,然后记录

a

最后 // same as `total = total / a` total /= a; 被分配了一个新的值 + 10。

total

我们一起经历第一次迭代

total += 10;

现在自己尝试这个迭代直到循环结束


有关更多信息,请参阅这些资源

答案 2 :(得分:0)

你开始循环 i=6 原因 values.length 是 8
你循环直到 i>=0 在每个循环中将 i 减 2
所以每个循环中的 a 值将相应地是值的第 7、5、3 和第一个元素,所以:5, 15, 4, 1 因此,每个循环中完成的数学运算如下:

100 / 5 + 10 = 30
30 / 15 + 10 = 12
12 / 4 + 10 = 13
13 / 1 + 10 = 23