[英]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.