繁体   English   中英

如何在数组中加数字

[英]How do I add numbers in an array

我正在尝试解决一个问题。


如果我们列出所有低于10的自然数,它们是3或5的倍数,则得到3、5、6和9。这些倍数的总和为23。

找出1000以下3或5的所有倍数的总和。

我已经完成了大部分工作。 但是,我无法获取要加到数组中的数字。 这是我到目前为止的代码

<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);

jsFiddle示例

您为什么不只在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM