我想知道如何优化条件,使其能够灵活地返回限制为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)}`);
}