En una declaración ternaria o if, a menudo quiero que el valor sea igual al valor de lo que se está probando, por ejemplo
//b is a integer or '-' //a should be an integer const a = b === '-' ? -1 : bLa declaración que estoy usando para a es
const a = expr.match(/.*?\((.*)[az].*/)[1]por lo tanto, sería bueno saber si hay una forma de una sola línea para que funcione, así que no estoy repitiendo una expresión complicada que puede cambiar.
Simplemente asigne la variable primero.
let b = b = expr.match(/.*?\((.*)[az].*/)[1]; const a = b == '-' ? -1 : b; Si realmente desea una sola línea, puede asignar b dentro de la expresión.
const a = (b = expr.match(/.*?\((.*)[az].*/)[1]) == '-' ? -1 : b; Pero deberías haber declarado b antes. Puede reutilizar la misma variable temporal cada vez, por lo que solo tiene que declararla una vez y usarla en todas las frases ingeniosas.
Si necesita este patrón en varios lugares, defina una función.
function if_dash(expr) { return expr == '-' ? -1 : expr; } const a = if_dash(expr.match(/.*?\((.*)[az].*/)[1]);Si desea obtener valor solo una vez, use el script mencionado a continuación. var a = (b = expr.match(/.*?\((.*)[az].*/)[1]) == '-' ? -1 : b;