javascript - javascript中的数组循环

标签 javascript arrays for-loop

我尝试开发一个简单的程序,打印 1 到 100 之间的所有数字除以 3 没有任何残差并计算总和

我是用 f​​or 循环做的:

var sum = 0;
for (var i = 3; i <= 100; i = i + 3) {
    document.write("<br/>" + i);
    sum = sum + i;
}
document.write("<br/>sum = " + sum); //1683

但是当我想用数组来做的时候我失败了:

var numbers = [];
var sum = 0;
for (var i = 0; i <= 100; i = i + 3) {
    numbers[i - 1] = i;
}

for (var index = 0; index < 100; index++) {
    document.write("<br/>" + numbers[index]);
    sum = sum + i;
}

document.write("<br/>sum = " + sum);

最佳答案

像这样使用它,

数组索引应该从0开始,所以我引入了另一个变量j=0

var numbers = [];
var sum = 0;
for (var i = 0, j = 0; i <= 100; i = i + 3, ++j) {
    numbers[j] = i;
}

更新

第一期: 在您的代码中,即。在你的代码下面,

for (var i = 0; i <= 100; i = i + 3) {
    numbers[i - 1] = i;
}

在第一次迭代中,

i = 0;
numbers[0-1] = i // i.e numbers[-1] = 0; 

在你的第二个循环中,你从 0 开始索引

for (var index = 0; index < 100; index++) {

第二期:

此外,如果您不使用顺序计数器来填充数组,您将以 undefined 值结束那些您没有填充的值。

enter image description here

如果您注意到,循环后的输出显示 numbers.length = 99,这是错误的,它不会包含那么多项目。

第三期:

在下面的代码中,即使你引入了顺序计数器,这仍然是错误的

for (var i = 0; i <= 100; i = i + 3) {
    numbers[i - 1] = i;
}

因为 i 应该以 3 而不是 0 开头,否则你将在数组中得到 34 个元素,因为 numbers[0] 将为 0;

第四期:

在这段代码中,

for (var index = 0; index < 100; index++) {
    document.write("<br/>" + numbers[index]);
    sum = sum + i;
}

你实际上不必循环到 100,你已经填充了数字数组,所以你只需要使用 numbers.length,就像这样

var len = numbers.length;
for (var index = 0; index < len; index++) {
    document.write("<br/>" + numbers[index]);
    sum = sum + i;
}

一种更好的方式来写这个

var numbers = [];
for (var i = 3, j=0; i <= 100; i = i + 3, j++) {
    numbers[j] = i;
}

var sum = numbers.reduce((a, b) => a+b);
console.log(sum);

var sum = numbers.reduce((a, b) => a+b); 使用 Array.reduce()方法。

关于javascript - javascript中的数组循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41296674/

相关文章:

c++ - 在 C++ 中反转二维数组

java - 如何连续迭代两个数组?

javascript - 带有 JavaScript 的 silverlight

JavaScript动画滑动菜单

java - 无法垂直检测 connect 4 win

python - 在 python 中大量使用嵌套循环是否合适?

java - 为什么c++程序员偏爱prefix++而java程序员偏爱postfix++?

javascript - Regex 适用于 RegExpr 但不适用于 Javascript。下划线和正斜杠之前的匹配

javascript 相对于窗口大小调整内容大小

javascript - 从 firebase 接收数据