Javascript 返回函数参数和给定数字之间的差值,且底部边距有限

Javascript 返回函数参数和给定数字之间的差值,且底部边距有限,javascript,algorithm,refactoring,mathematical-optimization,modulo,Javascript,Algorithm,Refactoring,Mathematical Optimization,Modulo,我这里有这段代码(JavaScript),似乎我可以在一条指令中重构它,也许可以使用模(%)? (注意:n始终在0和6之间,不需要处理其他情况) 我可以做到: if (n === 0) { return 1 } return (8 - n) 有没有一种更短的使用模符号的方法可以做到这一点?我会使用条件运算符: return n === 0 ? 1 : 8 - n; 更棘手的一点是:返回Math.max(8-n,1),它也将覆盖负片这是模版本: 常量输入=[0,1,2,3,4,5,6]

我这里有这段代码(JavaScript),似乎我可以在一条指令中重构它,也许可以使用模(
%
)? (注意:n始终在0和6之间,不需要处理其他情况)

我可以做到:

if (n === 0) {
  return 1
} 
return (8 - n)

有没有一种更短的使用模符号的方法可以做到这一点?

我会使用条件运算符:

return n === 0 ? 1 : 8 - n;

更棘手的一点是:
返回Math.max(8-n,1)
,它也将覆盖负片

这是模版本:

常量输入=[0,1,2,3,4,5,6]; 函数fn(x){ 返回7-((x+6)%7); }
console.log(inputs.map(fn))如果
n
小于0或大于6会发生什么?它永远不会发生。对不起,我应该提到它,n总是在[0,6]中,我想你是指
max
,而不是
min
n?8-n:1
@ChrisG:我想,原始版本更安全,对输入更健壮,比如
n=null
n=undefined
谢谢。我只是想知道,你的推理是什么,你是怎么想出来的?我总是在一张纸上画出我想要的图形,然后提出我需要的转换。例如,对结果求反将沿x轴翻转图形。添加到结果会将其上移。从x中减去会向右移动,等等。我假设情况7会返回1,所以有7个不同的结果。这意味着我需要
a-((x+b)%7)
。然后我尝试了不同的b值,直到截止值在0和1之间。最后,我调整了a以获得适当的范围:)
return n === 0 ? 1 : 8 - n;