JavaScript SUM函数检查

时间:2017-08-22 10:36:58

标签: javascript sum

每个人,我想创造一个" SUM"我自己的功能,但不知道我的代码出了什么问题,你能帮我解决一下吗?

function range(start,end,step){
var countx = [];
if(step===undefined){
step=1;
for(start=1;start<=end;start+=step)
  countx.push(start);
console.log(countx);
}
else {
for(var i=start;i>=end;i+=step)
  countx.push(i);
console.log(countx);
}
}

function sum(arrayx){
var total=0;
for(var i=0;i<=arrayx.length;i++)
total+=console.log(array[i]);
return total;
}

我想要的结果是 的console.log(总和(范围(1,10))); // - &GT; 55

7 个答案:

答案 0 :(得分:0)

这是获得范围总和的示例代码,如果n = 3,结果= 6 [总和3 + 2 + 1]

function sumrange(n){
result =0;
while(n-->0){
result+=n;
}
return result;
}

如果你想从范围求和

function sumrange(n,m){
result =0;
if(m>n){
while(m-->n){
result+=m;
    }
    return result;
}
}

答案 1 :(得分:0)

你离我很远..

我已经复制了您的代码并修复了错误,发表评论时您犯了错误。

&#13;
&#13;
function range(start,end,step){
  var countx = [];
  if(step===undefined){
    step=1;
    for(start=1;start<=end;start+=step)
      countx.push(start);
  } else {
    //like pointed out by JiangangXiong, you >= would want to be <= too.  
    for(var i=start;i<=end;i+=step)
      countx.push(i);  
  }
  return countx; //don't forget to return
}

function sum(arrayx){
  var total=0;
  //this for loop wants to be < not <=
  for(var i=0;i < arrayx.length;i++) 
  //total+=console.log(array[i]);
  total += arrayx[i];
  return total;
}

console.log(sum(range(1,10)));
&#13;
&#13;
&#13;

答案 2 :(得分:0)

可以进行多项优化,但下面是您的工作修改代码

function range(start,end,step){
        var countx = [];
        if(step===undefined){
          step=1;
          for(start;start<=end;start+=step)
            countx.push(start);
          console.log(countx);
        }
        else {
          for(var i=start;i>=end;i+=step)
            countx.push(i);
          console.log(countx);
        }
        return countx;
    }

    function sum(arrayx){
        var total=0;
        for(var i=0;i<arrayx.length;i++)
          total+=Number(arrayx[i]);
        return total;
    }

优化代码

function range(start,end,step){
    var countx = [];
    step = step? step: 1;
    for(start;start<=end;start+=step)
        countx.push(start);
    return countx;
}

function sum(arrayx){
    return arrayx.reduce((total, item)=>{return total+= item});
}

答案 3 :(得分:0)

else {
    for(var i=start;i>=end;i+=step) {
      countx.push(i);
      console.log(countx);
   }
 }

为什么有i>=end,而不是i<=end

答案 4 :(得分:0)

您可以使用javascript的reduce功能

function add(a, b) {
    return a + b;
}
function range(start, end, step) {
    var countx = [];
    if (step === undefined) {
        step = 1;
        for (start = 1; start <= end; start += step)
            countx.push(start);
    }
    else {
        for (var i = start; i >= end; i += step)
            countx.push(i);
    }
    var sum = countx.reduce(add, 0);

    
    console.log(sum);
}


range(1, 10);

答案 5 :(得分:0)

您的代码有更正:

function sum(arrayx){
    return total = arrayx.reduce((sum,num) =>{
        return sum += num;
    });
}

使用reduce改进sum函数:

from collections import defaultdict

dd = defaultdict(list)

for d in (d1, d2):
    for key, value in d.items():
        dd[key].append(value)

答案 6 :(得分:0)

&#13;
&#13;
function range(start,end,step){
    var countx = [];
    if(step===undefined){
      step=1;
      for(start=1;start<=end;start+=step)
        countx.push(start);
      console.log(countx);
    }
    else {
      for(var i=start;i>=end;i+=step)
        countx.push(i);
      console.log(countx);
    }
    return countx;
}

function sum(arrayx){
    var total=0;
    for(var i=0;i<arrayx.length;i++)
      total+=Number(arrayx[i]);
    return total;
}


console.log(sum(range(1,10)));
&#13;
&#13;
&#13;

&#13;
&#13;
function range(start,end,step){
    var countx = [];
    if(step===undefined){
      step=1;
      for(start=1;start<=end;start+=step)
        countx.push(start);
      console.log(countx);
    }
    else {
      for(var i=start;i>=end;i+=step)
        countx.push(i);
      console.log(countx);
    }
    return countx;
}

function sum(arrayx){
    var total=0;
    for(var i=0;i<arrayx.length;i++)
      total+=Number(arrayx[i]);
    return total;
}


console.log(sum(range(1,10)));
&#13;
&#13;
&#13;