Tengo una API que devuelve objetos en JSON. No todos tienen los mismos campos, algunos tienen algunos más. Estoy completando una tabla y quiero una forma más limpia de hacer lo siguiente:
if (items.hasOwnProperty('dayMargin')) { var dayMargin = items.dayMargin.formattedValue; } else { var dayMargin = "--" }Entonces, si ese objeto tiene 'dayMargin', generará el valor o "--" si esa clave/valor no existe. Quiero limpiar esto, ya que hay más de 10 escenarios similares. ¿Es posible usar un operador ternario aquí? ¿Si es así, cómo?
var dayMargin = items.hasOwnProperty('dayMargin') ? items.dayMargin.formattedValue : "--";También podría usar el encadenamiento condicional y el operador de fusión nulo:
var dayMargin = items?.dayMargin.formattedValue ?? "--";No estoy seguro si entiendo su problema, sin embargo, puede crear un operador ternario como este:
const dayMargin = items.hasOwnProperty('dayMargin') ? items.dayMargin.formattedValue : '--'El operador coalescente nulo se usa para hacer exactamente lo que desea.
//Object formating example let items = { dayMargin: 'im here', } items.dayMargin = items.dayMargin ?? '--' items.nightMargin = items.nightMargin ?? '--' console.log(items) //Property extracting example let items2 = { dayMargin: {formatedValue:'im here'}, } const dayMargin = items2.dayMargin?.formatedValue ?? '--' const nightMargin = items2.nightMargin?.formatedValue ?? '--' console.log(dayMargin, nightMargin)