Solución:
Podrías usar Object.assign
en combinación con el operador ternario:
let data = Object.assign({},
first === null ? null : {first},
...
);
Esto funciona porque Object.assign
se saltará null
parámetros.
Si está seguro de que el valor de la propiedad no será “falso”, entonces sería un poco más corto escribir:
let data = Object.assign({},
first && {first},
...
);
Suponiendo que el objeto se va a encadenar en algún momento, dado que la encadenamiento ignora los valores indefinidos, también puede intentar
let data = {
first: first === null ? undefined : first,
...
}
Dependiendo de la versión de JS que esté usando, puede usar el operador de propagación ...
const getData = data => ({
...data.first && { 'Custom First Prop Name': data.first },
...data.second && { 'Custom Second Prop Name': data.second },
...data.third && { third: data.third },
...data.fourth && { fourth: data.fourth },
});
Solución no en línea
Si no necesita agregar el valor en línea, es bastante sencillo y limpio escribir su tarea de esta manera.
const val1 = 1
const val2
const data = {}
val1 && (data.a = val1) // 1
val2 && (data.b = val2) // Not added
// data = { a : 1 }
NOTA: Esto no funcionará si el valor es falso.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)