【问题标题】:Javascript for loop sums循环求和的 Javascript
【发布时间】:2015-10-12 22:28:12
【问题描述】:

我想从 for 循环中找到一组数字的总和

我现在有

var num = "";
for(var i = 1; i < 11; i +=1){
    num = num + i;
}
console.log(num)

在 JS 控制台中给了我12345678910

我要制作1+2+3+4+5+6+7+8+9+10=SUM

我尝试添加一个“+”字符串: num = num + i + "+"; 但它给了我1+2+3+4+5+6+7+8+9+10+

我的问题是如何将“+”和“=”添加到代码中并得到总和。

【问题讨论】:

  • 你是连接而不是添加。
  • 对不起,我是 JS 新手,所以我的问题可能很难理解
  • 当你用 "" 声明变量时,你明确地把它变成了一个字符串。

标签: javascript loops for-loop


【解决方案1】:

如果您希望 + 显示 AND 实际总和,请执行此操作

var realSum = 0;
var num = "1";
for(var i = 2; i < 11; i +=1){
    realSum = realSum + i;
    num = num + "+" + i;
}
num = num + "=" + realSum;

【讨论】:

    【解决方案2】:

    试试这个:http://jsfiddle.net/kx9b7qu7/2

    使用评估

        var num = [];
        for(var i = 1; i < 11; i +=1){
            num.push(i)
        }
        var equation = num.join('+');
        var sum = eval(equation);
    
        console.log('Method 1: ',equation + '=' + sum)
    

    不使用评估

        var num = [];
        var sum = 0;
    
        for(var i = 1; i < 11; i +=1){
            num.push(i)
            sum += i    
        }
        var equation = num.join('+');
    
        console.log('Method 2: ',equation + '=' + sum)
    

    【讨论】:

      【解决方案3】:

      从中制作一个实用程序供以后使用;)还有其他方法可以利用函数方法(reduce、map)和尚未广泛支持的东西(生成器、数组理解)。

      以下是一些供考虑和调整的示例函数:


      // kind of usual
      
      var sumRange = function (from, to, step) {
      
        var i,
            sum = from,
            str = from;
      
        for (i = from + step; i <= to; i += step) {
          sum += i;
          str += '+' + i;
        };
      
        str += '=' + sum;
      
        return str;
      
      };
      
      // sum of elements in arithmetic progression
      
      var sumRangeAP = function (from, to, step) {
      
        var i,
            n,
            str = from;
      
        n = ((to - from) / step) + 1;
      
        for (i = from + step; i <= to; i += step) {
          str += '+' + i;
        };
      
        str += '=' + ((from + to) / 2) * n;
      
        return str;
      
      };
      
      // memory efficiency (not creating hell a lot of strings) together with some functional stuff
      // on the other hand it looks like assignment operators (+,  +=) win with .join in terms of speed sometimes
      // in many cases, I think, you may not give a shit about whether you use this or that
      
      var sumRangeME = function (from, to, step) {
      
        var i,
            sum = from,
            str = [from];
      
        for (i = from + step; i <= to; i += step) {
          str.push(i);
        };
      
        return str.join('+') + '=' + str.reduce(function (prevVal, curVal) { return prevVal + curVal; });
      
      };
      
      console.log(sumRange(0,20,1));
      console.log(sumRangeAP(0,20,1));
      console.log(sumRangeME(0,20,1));
      console.log(sumRange(1,21,1));
      console.log(sumRangeAP(1,21,1));
      console.log(sumRangeME(1,21,1));
      console.log(sumRange(7,36,1));
      console.log(sumRangeAP(7,36,1));
      console.log(sumRangeME(7,36,1));
      

      【讨论】:

        【解决方案4】:

        在 javascript + 中,也可以连接一个字符串,如果这看起来最好 - 它认为您将两个字符串放在一起,所以它连接它们。使 num 以 0 开始,这应该可以解决它。

        【讨论】:

        • 哦,我明白了,我很抱歉
        • 我真的不认为需要道歉,这个问题还不清楚。
        【解决方案5】:

        尝试使用var num=0 而不是var num="",因为这样操作符+ 被用作字符串连接。 num=0 将完成这项工作。

        【讨论】:

          【解决方案6】:

          编辑:我以为您想查看“数学”方程式,请尝试以下操作:

          var numbers = 0;
          
          for (var i = 1; i < 11; i += 1){
              numbers += i;
          }
          
          console.log(numbers);
          

          试试这个:

          var numbers = [];
          
          for (var i = 1; i < 11; i += 1){
              numbers.push(i);
          }
          
          var string = numbers.join("+");
          
          string += "=" + eval(numbers.join("+"));
          
          console.log(string);
          

          【讨论】:

            【解决方案7】:

            如果你真的想连接那么

            num = num + "+" + i;
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2023-03-09
              • 1970-01-01
              • 1970-01-01
              • 2017-08-08
              • 1970-01-01
              • 2011-03-24
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多