我尝试开发一个简单的程序,打印 1 到 100 之间的所有数字除以 3 没有任何残差并计算总和
我是用 for 循环做的:
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
值结束那些您没有填充的值。
如果您注意到,循环后的输出显示 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/