1

如此简单的问题,我似乎无法弄清楚。如果这很明显,我只是在学习,很抱歉。

必须输出 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

4 回答 4

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/

于 2011-05-24T19:27:29.240 回答
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。

于 2013-11-17T18:37:03.630 回答
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>"
于 2011-05-24T19:31:15.350 回答
0

每次通过循环时,您都在重新创建结果数组,请尝试在 while 循环之前声明它。

于 2011-05-24T19:28:37.853 回答