Quiero conservar lo undefined si anclado es realmente indefinido, de lo contrario, quiero establecer el valor en el signo igual en 1 si anclado es verdadero y 0 si es falso. Se me ocurrió esto que funciona, pero sigo mirándolo y parece que debería ser más simple.
const resultingValue = pinned === undefined ? undefined : pinned ? 1 : 0;
Lo que quiero es:
si anclado no está definido, devuelve indefinido si anclado es verdadero, devuelve 1 si anclado es falso, devuelve 0 de lo contrario, devuelve 0;
Puede verificar el tipo y devolver un número booleano o undefined .
const resultingValue = typeof pinned === 'boolean' ? +pinned : undefined;Funciona para: true , false , undefined , 0 , 1
const resultingValue = +pinned + 1 ? +pinned: undefined;Utilice una tabla de búsqueda para cada valor. El undefined se puede omitir ya que producirá undefined por defecto:
const lookup = {true: 1, false: 0}; const convert = value => lookup[value]; console.log(convert(true)); console.log(convert(false)); console.log(convert(undefined)); console.log(convert());Esto se puede acortar a una sola función, si lo desea:
const convert = value => ({true: 1, false: 0}[value]); console.log(convert(true)); console.log(convert(false)); console.log(convert(undefined)); console.log(convert());