2011-05-24 60 views
1

所以我真的很難想象這個真正簡單的問題。如果這是顯而易見的,我只是很抱歉。需要幫助,非常簡單的運行總數爲javascript

必須輸出7次表格並在最後給出總計。 這是我有:

document.write("<h3>7 times tables</h3>"); 
document.write("<ul>"); 
i=1; 
seven=7; 

    while(i < 13) { 
    Seven= i * seven; 
    document.writeln("<li>" + i + " times 7 = " + Seven); 
    var result=new Array(6) 
    result[1]=Seven; 
    i++; 
    } 

document.writeln("</ul>"); 
document.write("<strong>The sum do far is"+result[1]+"</strong>"); 

感謝

+4

什麼是你的問題? – 2011-05-24 19:27:02

+0

請提供更好的示例代碼。 – roberkules 2011-05-24 19:27:39

+0

我的頭腦麻痹。 – dkamins 2011-05-24 19:28:26

回答

3

你重新聲明內循環的result陣列,所以每次迭代抹了前面的計算,並從頭開始,你過來。移動var result=new Array(6)立即前while(i<13),然後再試一次:

var result = new Array(6); 
while(i < 13) { 
    ... 
} 

不過,這引出的「爲什麼使用數組」的問題......?你只是用它做一個總的運行,所以只使用一個簡單INT:

var result = 0; 
while(i < 13) { 
    result = result + (i * 7); // or simply: result += i * 7; 
    ... 
} 

這裏有一個小提琴http://jsfiddle.net/zeYQm/1/

+0

JavaScript沒有塊範圍,所以「即使它在while塊中聲明,它仍然會被懸掛到函數的頂部」引用道格拉斯克羅克福德 – 2011-05-24 19:29:05

+0

是的,但它是在循環中完成的。所以它每次都會實例化一個新的數組。 – 2011-05-24 19:30:26

+0

我的不好,我沒有注意到數組聲明。 +1指出我的錯誤。 :-) – 2011-05-24 19:36:42

0

你每次都要經過一次循環再造的結果數組,嘗試在while循環之前聲明它。

1
document.write("<h3>7 times tables</h3>"); 
document.write("<ul>"); 
i=1; 
seven=7; 
var result = 0; 
    for(var i = 1; i <= 13; i++){ 
    document.writeln("<li>" + i + " times 7 = " + (seven*i) + '</li>'); 
    result += (seven*i); 
    } 

document.writeln("</ul>"); 
document.write("<strong>The sum do far is"+result+"</strong>" 
1

您可能還想看看underscore.js,它爲Javascript增加了一些不錯的函數式編程能力。

var underscore = _.noConflict(); 
var arr = [5, 5, 5, 5, 5]; 
var temp = []; 
underscore.reduce(arr, function(memo, num) { 
    var value = memo + num; 
    temp.push(value); 
    return value; }, 0); 
console.log(temp); 

//主要生產:5,10,15,20,25