如何将 for 循环的每次迭代的结果存储到数组中 (Javascript)

How to store the result of each iteration of a for loop into an array (Javascript)

本文关键字:数组 存储 Javascript 结果 迭代 for 循环      更新时间:2023-09-26

这个问题也可能是(取决于你如何看待它) - 如何使用 for 循环进行基本的数学运算,将 3 的倍数之和相加

所以我正在做欧拉计划的问题 1。

我(已经)撞到了钢筋墙。我可以使用一些帮助 - 请只处理问题的特定部分(我不只是在寻找问题的答案,而是寻找我特定问题的答案,这样我就可以继续尝试使用你们在这里提供的任何答案来解决其余问题)...

无论如何。

(认为我)创建了一个 for 循环,它将给我 3 的倍数。但是,我正在尝试存储 for 循环每次迭代的结果,以便它加起来就是这些倍数的总和,即我正在尝试存储循环每次迭代的结果 - 无论是到数组中还是到采用倍数之和的变量中 - 这对我来说并不重要 - 我不介意学习这两种方法。

我敢肯定这听起来有点令人困惑,所以让我用一个例子画我的图片......

我有一个 for 循环:

for (i = 1; i <= 3; i++) {
var x = 0;
x += (i * 3);
WHAT DO I DO NEXT????

^ 所以我认为这给了我在循环的第一次迭代中值为 3 的 x,在第二次循环中值为 9 的 x,在最后一次循环中值为 18 的 x。没错吧?(如果这返回 18,我认为我不需要在数组中存储每次迭代的值)

第一次迭代:

i = 1; x = 0

原始方程...

(i * 3) + x            

所以。。。

(1 * 3) + (x = 0) = 3

所以在完成第一个循环后,x 的值为 3,对吧???(问题:我将如何存储 x 的值(即 3) - 在 for 循环的这个阶段,我将如何将其存储在数组中?

循环的第二次迭代:

i = 2; x = 3
(2 * 3) + (x = 3) = 9     

(与以前相同的问题:如何将此值添加到数组中?

第三次迭代:

i = 3; x = 9
(3 * 3) + (x = 9) = 18      

问:这不应该是 for 循环完成后 x 的最终值吗???出于某种原因,当我运行代码时,x 的最终值是 9,而不是 18

所以,基本上我正在尝试添加 3 个值的总和......但是我接下来该怎么做呢?我以为我的 for 循环会将每个循环后的方程结果添加到 x,但不是以 w/18(3 + 6 + 9 的总和)结束,而是 x 的值是 9???

我应该使用数组吗?如果是这样,我想我可以将返回值添加到数组中,但我不确定如何将循环每次迭代的结果添加到数组中。也许如下?...

for (i = 1; i <= 3; i++) {
var array = [];
x = 0;
x += (i *3); 
array.push(x);
};

^ 我尝试在 jfiddle 中运行它,但它只会将 x (9) 的最后一个值添加到数组中......那么如何在 for 循环的每次迭代后将 x 的值添加到数组中???而且我没有看到我的 for 循环有什么问题,它返回的值 x 为 9?

另外,我假设随着我们的进步,欧拉问题变得更加困难?如果是这样,我有很多工作/实践要做......

提前感谢...

只需创建一次数组,并将每次迭代的结果推送到数组中:

var array = [];
for (i = 1; i <= 3; i++) {
    var x = 0;
    x += (i *3); 
    array.push(x);
}

或者就此而言,只需使用以下内容:

var array = [];
for (i = 1; i <= 3; i++) {
    array.push(i *3);
}

或者要简单地获得因子的总和,请使用以下内容:

var x = 0;
for (i = 1; i <= 3; i++) {
    x += i *3;
}

你在循环的每一步都声明var x = 0var array = [],请尝试如下操作:

var array = [], x = 0;
for (i=1; i<4; i++){
  x += (i*3); 
  array.push(x);
}

你可以这样使用:你必须定义X出圈

var array = [],
x = 0;
for (i=1; i<4; i++){
  x += (i*3); 
  array.push(x);
}