Si tengo una matriz de data ,
const data = [ { name: "dog", age: 11 }, { name: "cat", age: 21, } ]Quiero agregar un objeto en medio de eso si una condición es verdadera:
const shouldAddNewAnimal = true; const animal = { name: "tiger", age : 22, } ¿Cómo escribiría eso sin un else ?
const data = [ { name: "dog", age: 11 }, foo ? animal : {}; { name: "cat", age: 21, } ]arriba es la única forma en que puedo pensar en escribirlo, pero no quiero insertar un objeto vacío allí si la condición no es cierta.
Podría extenderse con matrices, una con el objeto deseado y la otra vacía.
const shouldAddNewAnimal = true, animal = { name: "tiger", age: 22 }, data = [ { name: "dog", age: 11 }, ...(shouldAddNewAnimal ? [animal] : []), { name: "cat", age: 21 } ]; console.log(data); .as-console-wrapper { max-height: 100% !important; top: 0; }Puede utilizar un operador de propagación:
const foo = true; const animal = { name: "mouse", age: 10 }; const data = [ { name: "dog", age: 11 }, ...(foo ? [animal] : []), { name: "cat", age: 21, } ] console.log(data); Esto dará como resultado que el animal se extraiga de su matriz envolvente y se agregue a la matriz "externa".
En el caso de la ruta "else", la difusión del null dará como resultado que no se agregue nada a la matriz "externa".
Puede lograr esto agregando nulos y filtrándolos de esa manera usando el filter
const shouldAddNewAnimal = false; const animal = { name: 'parrot', age:12 } let data = [ { name: "dog", age: 11 }, shouldAddNewAnimal ? animal : null, { name: "cat", age: 21 } ].filter(item => item !== null); console.log(data); const shouldAddNewAnimal = true; const animal = { name: 'parrot', age:12 } let data = [ { name: "dog", age: 11 }, shouldAddNewAnimal ? animal : null, { name: "cat", age: 21 } ].filter(item => item !== null); console.log(data);