Necesito obtener una matriz resultante de la matriz original props.ids y condicionalmente (si no es NULL) la variable selectedId adjunta. Lo siguiente funciona, pero la sintaxis no parece correcta. Necesito el selectedId && para verificar si no es NULL, y si es así, agregue el ID selectedId . ¿Hay una mejor sintaxis para esta pequeña expresión?
const [selectedId, setSelectedId] = useState(null); obj = { 'exclude':[...props.ids, selectedId && selectedId]} }De una sola línea
const [selectedId, setSelectedId] = useState(null); obj = { exclude:[...props.ids, ...(selectedId === null ? [] : [selectedId])]} }Forma apropiada
const [selectedId, setSelectedId] = useState(null); obj = { exclude: [...props.ids] } if (selectedId !== null) { obj.exclude.push(selectedId) }Además de la respuesta de Ananth, también podría usar el operador ternario en línea
const ids = [1, 2, 3]; let item = null; let resultWhenNull = [...ids, ...(item ? [item] : [])]; console.log(resultWhenNull); item = 4; const resultWhenNonNull = [...ids, ...(item ? [item] : [])]; console.log(resultWhenNonNull);puede usar el operador ternario o una declaración if simple para lograr esto
const [selectedId, setSelectedId] = useState(null); const obj = {}; // if selectedId is present append selectedId, else return array of props.ids obj['exclude'] = selectedId ? [...props.ids, selectedId] : [...props.ids] const value = false; const props = [1, 2, 3]; const valToAppend = 4; const obj = {}; obj['test'] = value ? [...props, valToAppend] : [...props]; console.log(obj);