【问题标题】:For loop repeating first iteration twiceFor循环重复第一次迭代两次
【发布时间】:2011-11-02 17:11:41
【问题描述】:

我遇到了 javascript for 循环的问题。我正在添加数组的元素,但由于某种原因,我的循环在第一个条目中添加了两次!之前这里有一个类似的话题(http://*.com/questions/3121670/for-loop-repeats-first-loop-twice)但是作者没有详细讨论他的解决方案,只是它是“有点愚蠢”他做到了。谁能告诉我我在做什么傻事??

for(j=0;j<ARRAY.length;j++)
{TOTAL += ARRAY[j];}

输出在 HTML 表格中使用,并且显示正确,问题只是第一个条目的两倍!

任何帮助将不胜感激。

【问题讨论】:

  • 好吧,在这种情况下它不应该有任何区别,但你应该确保用var 声明“j”。您的循环绝对不会重复第一次迭代。
  • @Karl Major:也检查一下您之前的一些问题并接受对您有帮助的答案
  • ARRAY 中的前两个条目是否相同?
  • @Jack Maney - 是的。
  • @Pointy - 添加 var 并不能解决我的问题,我已经尝试过了,因此我非常困惑。

标签: javascript html for-loop sum


【解决方案1】:

    var TOTAL = 0;
    for ( var j = 0, @987654321@; j < len; j++ ) {
        TOTAL += ARRAY[j];
    }

MDN 建议使用变量来保存数组长度。此外,请使用 JSLint 检查您的脚本。

【讨论】:

  • 感谢您的回复@Bakudan,但不幸的是,这会产生与以前相同的结果!我不知道发生了什么。还要感谢 JSLint,我以前从未听说过这个。在这种情况下,尽管它只是指出了我的代码中的一些格式错误并且没有为我的问题提供任何补救措施。
  • @KarlMajor 您提供的 sn-p 太小,找不到其他任何东西。
【解决方案2】:

确保使用 var 声明...

里面也有一点提示调试。

for(var j=0; j < ARRAY.length; j++) {
{
    TOTAL += ARRAY[j];
    //alert("The count of J is now " + j);
}

【讨论】:

  • 感谢@Graeme 的调试提示,但不幸的是,添加 var 并不能解决我的问题。我开始失去希望了。目前我已经声明了一个等于 TOTAL-ARRAY[0] 的新变量,它给出了正确的数字,但这显然非常混乱。
【解决方案3】:

感谢您的所有帮助。由于我最初的方法遇到了死胡同,我考虑使用一个函数来解决这个问题。以下作品:

Array.prototype.sum = function() {
for (var j = 0, L = this.length, sum = 0; j < L; sum += this[j++]);
return sum;
}

然后我在创建我的 html 表时调用 ARRAY.sum()。

我在http://www.codingforums.com/showthread.php?t=218803找到了上述解决方案

【讨论】: