Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
循环和的Javascript_Javascript_Loops_For Loop - Fatal编程技术网

循环和的Javascript

循环和的Javascript,javascript,loops,for-loop,Javascript,Loops,For Loop,我想从for循环中找到一组数字的和 我现在有 var num = ""; for(var i = 1; i < 11; i +=1){ num = num + i; } console.log(num) var num=”“; 对于(变量i=1;i

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

我现在有

var num = "";
for(var i = 1; i < 11; i +=1){
    num = num + i;
}
console.log(num)
var num=”“;
对于(变量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+


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

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

var realSum = 0;
var num = "1";
for(var i = 2; i < 11; i +=1){
    realSum = realSum + i;
    num = num + "+" + i;
}
num = num + "=" + realSum;
var realSum=0;
var num=“1”;
对于(变量i=2;i<11;i+=1){
realSum=realSum+i;
num=num+“+”+i;
}
num=num+“=”+realSum;

在javascript+中,如果这看起来是最好的,它还可以连接一个字符串-它认为您将两个字符串放在一起,所以它将它们连接起来。改为将num start设置为0,这将修复它

不要使用
var num=“”
尝试使用
var num=0
,因为这样操作符
+
被用作字符串连接
num=0
将完成此任务。

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

var numbers = 0;

for (var i = 1; i < 11; i += 1){
    numbers += i;
}

console.log(numbers);
var数=0;
对于(变量i=1;i<11;i+=1){
数字+=i;
}
控制台日志(编号);
试试这个:

var numbers = [];

for (var i = 1; i < 11; i += 1){
    numbers.push(i);
}

var string = numbers.join("+");

string += "=" + eval(numbers.join("+"));

console.log(string);
var number=[];
对于(变量i=1;i<11;i+=1){
数字推送(i);
}
var string=numbers.join(“+”);
字符串+=“=”+eval(numbers.join(“+”);
console.log(字符串);

如果您真的要连接

num = num + "+" + i;
试试这个:

使用Eval

    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=[];
对于(变量i=1;i<11;i+=1){
推送次数(一)
}
变量方程=num.join(+);
var总和=eval(等式);
console.log('方法1:',等式+'='+sum)
不使用Eval

    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)
var num=[];
var总和=0;
对于(变量i=1;i<11;i+=1){
推送次数(一)
总和+=i
}
变量方程=num.join(+);
console.log('方法2:',等式+'='+sum)

从中提取一个util供以后使用;)还有其他一些方法可以利用函数方法(reduce、map)和还没有得到广泛支持的东西(生成器、数组理解)

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


//有点平常
var sumRange=函数(从、到、步){
var i,
总和=从,
str=来自;

对于(i=from+step;i)您正在连接而不是添加。抱歉,伙计们,我是JS新手,所以我的问题可能很难理解。当您使用“”声明变量时,您明确地将其设置为字符串。哦,我明白了,好吧,我的道歉我真的不认为需要道歉,问题只是不清楚。
// 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));