Return 函数参数与给定数字之间的差异,下边距有限

Return difference between function argument and given number with limited bottom margin

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

switch (n) {
  case 0: 
    return 1
  case 1:
    return 7
  case 2:
    return 6
  case 3:
    return 5
  case 4:
    return 4
  case 5:
    return 3
  case 6:
    return 2
}

我能做到:

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

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

我会使用条件运算符:

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

更棘手的一个:return Math.max(8-n, 1),它也将涵盖底片

这是模数版本:

const inputs = [0, 1, 2, 3, 4, 5, 6];

function fn(x) {
  return 7 - ((x + 6) % 7);
}

console.log(inputs.map(fn))