对Javascript中某个范围内的每个元素求和

对Javascript中某个范围内的每个元素求和,javascript,function,math,Javascript,Function,Math,我正在努力使我的小函数工作,它将所有数字相加到一个范围内 例如,当我调用如下方法:sumAll(3,10)它应该可以 3+4+5+6+7+8+9+10 如果我给函数一个正整数,它就可以工作,但是如果它收到一个负数、一个字符串或一个数组,例如,它就不能正常工作。。如果提供的参数不是正整数,我只想返回“ERROR” 我能帮点忙吗?有更优雅(更好)的方法吗 我的代码: const sumAll = (...args) => { let max = Math.max(...args);

我正在努力使我的小函数工作,它将所有数字相加到一个范围内

例如,当我调用如下方法:
sumAll(3,10)
它应该可以
3+4+5+6+7+8+9+10

如果我给函数一个正整数,它就可以工作,但是如果它收到一个负数、一个字符串或一个数组,例如,它就不能正常工作。。如果提供的参数不是正整数,我只想返回“ERROR”

我能帮点忙吗?有更优雅(更好)的方法吗

我的代码:

const sumAll = (...args) => {
    let max = Math.max(...args);
    let min = Math.min(...args);

    if ((min < 0) || (!Number.isInteger(min)) || (!Number.isInteger(max)) || (Array.isArray(...args))) {
        return "ERROR";
    }

    let n = (max - min) + 1;

    return ((max + min) * n) / 2;
}
const sumAll=(…args)=>{
设max=Math.max(…args);
设min=Math.min(…args);
if((min<0)| |(!Number.isInteger(min))| |(!Number.isInteger(max))| |(Array.isArray(…args))){
返回“错误”;
}
设n=(最大-最小)+1;
返回((最大+最小)*n)/2;
}

您可以使用高斯公式从1。。。n并减去子计数

如果可能,为了只得到一个结果,您可以添加一个正整数检查

const
isPositiveInt=v=>Number.isInteger(v)和&v>0,
sumN=n=>n*(n+1)/2,
范围=(m,n)=>isPositiveInt(m)和&isPositiveInt(n)
? sumN(数学最大值(m,n))-sumN(数学最小值(m,n)-1)
:“错误”;
控制台日志(范围(3,10));
控制台日志(范围(10,3));
log(range());
控制台日志(范围(3));
控制台日志(范围('',10));

log(范围(0.2,0.3))为什么不
抛出
?您能告诉我这个代码在哪种情况下不起作用吗?对我来说,sumAll(3,10)//工作正常sumAll(-1,10)//返回错误,这是预期的,不是吗?当我向函数传递字符串、负数或数组时,它不工作。我建议您重试代码,对我来说,它工作正常,没有任何更改,正如您所说的。否则你可以继续使用Nina的代码。肯定会尝试,但如果参数不是正整数,我如何确保它抛出错误?我认为这是目前唯一不起作用的部分。