2011-11-02 113 views
0

我遇到了javascript for循环的问题。我将一个数组的元素相加,但由于某种原因,我的循环会在第一个条目中添加两次!在这里有一个类似的话题(http://stackoverflow.com/questions/3121670/for-loop-repeats-first-loop-twice),但作者没有详细解释他的决议,只是它是“事端愚蠢”他做到了。谁能告诉我我在做什么愚蠢?For循环重复第一次迭代两次

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

输出在HTML表中使用,它是正确显示,它只是增加了一倍第一个条目这是个问题!

任何帮助将不胜感激。

+0

初始化了'TOTAL'吗? – 2011-11-02 17:13:26

+0

在这种情况下,它不应该有任何区别,但你应该确保“j”是用'var'声明的。你的循环肯定不会重复第一次迭代。 – Pointy

+3

@Karl Major:也通过你之前的一些问题并接受对你有帮助的回答 – PeeHaa

回答

0

感谢您的帮助。由于我原来的方法达到了死胡同,我研究了使用函数来实现这个技巧。以下作品:

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

1

确保你使用var声明......在那里也促使调试

尼斯点点。

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

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

2

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

MDN建议使用一个变量来保存的阵列长度。另外请用JSLint检查你的脚本。

+0

感谢您的回复@Bakudan,但不幸的是这呈现与以前相同的结果!我不知道发生了什么事。也感谢JSLint,我以前从来没有听说过这个。在这种情况下,尽管它仅仅指出了我的代码中的一些formattin错误,并没有为我的问题提供补救措施。 –

+0

@KarlMajor您提供的代码段太小而无法找到其他内容。 – Bakudan