En Python puedo hacer algo como:
a = 1 if x==2 else 2 if x==3 else 3 if ... # Like a SQL CASE statement¿Hay una manera similar de hacer esto en JavaScript? Actualmente estoy encadenando expresiones ternarias juntas:
a = (x===2)? 1 : (x===3)? 2 : ...¿Es esta la forma sugerida de lograr eso?
Dos alternativas vienen a la mente.
switch / case Esto no existe en Python, pero en JavaScript puede usar una declaración de switch de la siguiente manera:
const x = 3; let a; switch (x) { case 2: a = 1; break; case 3: a = 2; break; default: a = 1; } console.log(a); <!-- -->Es un poco detallado, pero puedes deshacerte de parte de la verbosidad envolviéndolo en una función:
function val(x) { switch (x) { case 2: return 3 case 3: return 2; default: return 1; } } const x = 3; const a = val(x); console.log(a); Puede rellenar un objeto con valores de búsqueda. Puede usar un objeto regular, pero dado que está tratando con teclas numéricas, un Map es más adecuado:
const values = new Map([ [2, 1], [3, 2] ]); const x = 3; const a = values.get(x); console.log(a);Puede estar hablando de expresiones: el operador condicional . Aquí está el ejemplo.
El operador condicional (ternario) es el único operador de JavaScript que toma tres operandos: una condición seguida de un signo de interrogación (?) y luego una expresión para ejecutar si la condición es verdadera, seguida de dos puntos (:) y finalmente el expresión a ejecutar si la condición es falsa. Este operador se usa con frecuencia como atajo para la instrucción if .
function fun(var) { return (var ? '2' : '10'); } console.log(fun(true)); // Expected output: "2" console.log(fun(false)); // Expected output: "10" console.log(fun(null)); // Expected output: "10"