Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

103
Visualizações
Mecanografiado/Javascript Agrega condicionalmente miembros al objeto usando la operación de propagación

Estoy tratando de agregar miembros condicionalmente a un objeto usando el método prescrito aquí

Aquí está mi código:

 const theobj = { field1: "hello", field2: 1, data: { datafield1: "world", datafield2: 2 }, field3: "yowzee" }; let someobj: any; someobj = theobj; const test = { ...(someobj.field1 && {field1: someobj.field1}), ...(someobj.nofield && {nofield: "yowzee"}), ...(someobj.data?.datafield1 && {data: {dataField1: "woohoo"}}), ...(someobj.data?.datafield2 && {data: {datafield2: "hooahh"}}), // overwrites the above }; console.log(test);

Esto funciona muy bien, excepto que el último condicional sobrescribe data.datafield1. Es como si recreara los objetos de datos internos. Alguna idea de cómo resolver esto?

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

En esa última línea, está configurando la propiedad de data del objeto en un nuevo objeto, {datafield2: "hooahh"} .

Eso sería el equivalente a:

 { data: { a: 1 } data: { b: 2 } }

las claves duplicadas se anulan, por lo que se convierte en

 { data: { b: 2 } }

Si desea establecer data en un solo objeto con sus propias subclaves condicionales, puede hacerlo:

 const test = { ...(someobj.field1 && {field1: someobj.field1}), ...(someobj.nofield && {nofield: "yowzee"}), ...(someobj.data && {data: { ...(someobj.data.datafield1 && {dataField1: "woohoo"}), ...(someobj.data.datafield2 && {dataField2: "hooahh"}), }}), };
about 4 years ago · Juan Pablo Isaza Relatório

0

Sí, está sucediendo exactamente lo que está pensando, es por eso que necesita una referencia de un valor anterior del objeto de datos.

 const test = { ...(someobj.field1 && { field1: someobj.field1 }), ...(someobj.nofield && { nofield: "yowzee" }), ...(someobj.data.datafield1 && { data: { dataField1: "woohoo" }}), ...(someobj.data.datafield2 && { data: { ...someobj.data, datafield2: "hooahh" }}), // doesn't overwrites the above. };

Al distribuir someobj.data dentro de sí mismo, se asegura de que tenga su valor anterior.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda