如何生成一个返回带限制的索引的函数



我想知道如何优化条件,使其能够灵活地返回限制为3个索引的索引

if(val === 0) return 0;
if (val === -90) return 3;
if (val === -180) return 2;
if (val === -270) return 1;
if (val === -360) return 0;
if (val === -450) return 3;
if(val === 0) return 0;
if (val === 90) return 1;
if (val === 180) return 2;
if (val === 270) return 3;
if (val === 360) return 0;
if (val === 450) return 1;

等等

我想知道如何制作一个函数,如果用户增加90,返回值应该增加3,然后在3之后,它将返回0索引

function f(x) {
let z = x / 90;
let y = z % 4;
return y < 0 ? 4 + y : y;   
}

for(let i =  -90 * 10; i <= 90 * 10; i = i + 90) {
console.log(`x = ${i} => result => ${f(i)}`);
}

function f(x) {
return ((x / 90) % 4 + 4) % 4;
}

for(let i =  -90 * 10; i <= 90 * 10; i = i + 90) {
console.log(`x = ${i} => result => ${f(i)}`);
}

您应该先获得最小输入,然后再添加360。

val = 360+val;
if(val % 360 === 90){
return 1
}
if(val % 360 === 180){
return 2
}
if(val % 360 === 270){
return 3
}
if(val % 360 === 0){
return 0
}

对于正数,可以尝试除以90,对于负数,可以先加360,然后除以90。

您可以执行(val % 360) / 90

if (val % 90 !== 0) return null.
return (val % 360) / 90;

尝试

const f = v => (v = v / 90 % 4, v < 0 ? 4 + v : v | 0);
for (let i = -450; i <= 450; i += 90) {
console.log(`f(${i}) = ${f(i)}`);
}

最新更新