[英]How do I add numbers in an array
我正在尝试解决一个问题。
如果我们列出所有低于10的自然数,它们是3或5的倍数,则得到3、5、6和9。这些倍数的总和为23。
我已经完成了大部分工作。 但是,我无法获取要加到数组中的数字。 这是我到目前为止的代码
<script src="jquery-1.11.1.min.js"></script>
<script>
$(document).ready(function () {
var counter;
for (counter = 0; counter < 1001; counter++) {
if (counter % 3 == 0 || counter % 5 == 0) {
var arrayNumbers = [];
arrayNumbers.push(counter);
}
}
var total = 0;
$.each(arrayNumbers, function () {
total += this;
});
console.log(total);
});
</script>
控制台将其记录为1000
我认为wrng是我的变量范围。 我怎样才能解决这个问题?
您应该在for loop
之外创建arrayNumbers
,否则它将在每个循环中被处理和覆盖 。
<script src="jquery-1.11.1.min.js"></script>
<script>
$(document).ready(function () {
var counter;
var arrayNumbers = [];
for (counter = 0; counter < 1001; counter++) {
if (counter % 3 == 0 || counter % 5 == 0) {
arrayNumbers.push(counter);
}
}
var total = 0;
$.each(arrayNumbers, function () {
total += this;
});
console.log(total);
});
</script>
我不想弄乱您的算法,但是我建议您在此练习中使用计数器变量。
您应该以找到的每一个倍数递增计数器,计数器的最终值将是所有倍数的总和
<script src="jquery-1.11.1.min.js"></script>
<script>
$(document).ready(function () {
var counter = 0;
var number;
for (number = 0; number < 1001; number++) {
if (number % 3 == 0 || number % 5 == 0) {
counter += number;
}
}
console.log(counter);
});
</script>
通过使用仅循环一个,可以不使用数组来实现。
$(document).ready(function () {
var counter;
var result;
for (counter = 0; counter < 1001; counter++) {
if (counter % 3 == 0 || counter % 5 == 0) {
result+=counter;
}
console.log(result);
}
您可以在没有任何数组或jQuery的情况下执行此操作:
var counter, total=0;
for (counter = 0; counter <= 1000; counter++) {
if (counter % 3 == 0 || counter % 5 == 0) {
total += counter;
}
}
console.log(total);
您为什么不只在for循环中进行求和? 有点像这样:
<script src="jquery-1.11.1.min.js"></script>
<script>
$(document).ready(function () {
var counter;
var total= 0;
for (counter = 0; counter < 1001; counter++) {
if (counter % 3 == 0 || counter % 5 == 0) {
var arrayNumbers = [];
arrayNumbers.push(counter);
total += counter;
}
}
console.log(total);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.