Estoy tratando de hacer una conversión de número a mes. Estoy tratando de hacerlo con una instrucción if, por ejemplo, if(num===0) {month = "January";} else if(num===1) {month = "February";}
etc. ¿Existe una forma de acortar esto? Imagino que sería algo así como if(num===[0,1,2,3,4,5]) {month = ["January", "February", "March", "April", "May", "June"}
En otras palabras, ¿hay algún tipo de forma de usar una matriz con una función if, mientras que la función if pasa por cada uno respectivamente? Por cierto, estoy usando la biblioteca p5, si eso hace alguna diferencia.
Creo que la mejor solución sería usar una serie de meses como esta:
const month = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; const answer = month[num];
Puede usar una declaración de cambio
var num = 0; switch (num) { case 0: month = "January"; break; case 1: month = "February"; break; case 2: month = "March"; break; case 3: month = "April"; break; case 4: month = "May"; break; case 5: month = "June"; break; default: day = "Unknown Month"; }
Leer más: https://www.w3schools.com/jsref/jsref_switch.asp https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch
si sus rangos son en su mayoría de naturaleza contigua, una forma es crear previamente una cadena de búsqueda que también sea simultáneamente las claves y los valores, como
1:JAN:2:FEB:3:MAR: etc
con una naturaleza de ancho constante. incluso 1:J:2:F:3:M:4:A….(Quiero decir que es factible escribir todos los nombres allí, pero luego necesitará algo de relleno).
y cuando se llame a la función, use una combinación de funciones de coincidencia o de subcadena para "cortar" las que necesita primero, diga " 4:APR:5:MAY:6:JUN:7:JUL
" (tendrá que sea creativo con sus propias notaciones cuando use letras individuales cada una y cuando 3-5, 4-8 y 1-6-7 se dupliquen... o simplemente use base-12)
si un prefijo de 3 letras ya satisface sus necesidades, entonces haga un gsub de alta velocidad para deshacerse de todos los números y delimitadores, y cámbielos a una coma o algo así.
y si opta por los meses completos, no sé cuánto ayudará en absoluto, pero tal vez pueda regex sub-en los sufijos comunes de 9-10-11-12 principalmente en una sola toma, y también 1-2. 5 ya es su nombre completo.
otro enfoque es que si sus rangos generalmente abarcan más de la mitad del año, incluso un enfoque de "resta" podría ser preferible a uno de "suma": siempre comience con la cadena completa con todos los meses deletreados. luego, para los meses que faltan en su entrada, bórrelos y devuelva lo que sobra.
y diga si sus rangos tienden a agruparse dentro de la misma mitad del año en lugar de a horcajadas, entonces incluso puede dividir esa clave de índice en 2 para hacerlo más rápido (aunque los ahorros son pequeños)