Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

104
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!