对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的代码。肯定会尝试,但如果参数不是正整数,我如何确保它抛出错误?我认为这是目前唯一不起作用的部分。