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

128
Views
Iterar a través de un objeto anidado y copiar valores de otros si no existen

Tengo una pregunta compleja para la que no puedo encontrar la respuesta. Entonces, en mi bot de Discord, tengo un pequeño objeto llamado config . También tengo un objeto baseConfig , que son los valores predeterminados que se usan cuando el bot se agrega a un nuevo servidor. A veces, actualizo mi bot de una manera que requiere un nuevo valor de configuración: quiero poder agregarlo a baseConfig y que la nueva clave se refleje en la config . (En realidad, el objeto de configuración tiene objetos anidados para diferentes gremios, pero lo escribo de una manera en la que esto es irrelevante). Como ejemplo, digamos que obj1 es una configuración y obj2 es la configuración base.

 let obj1 = { emojiSettings: { success: ":success:", error: ":error:" }, warnSettings: { muteThreshold: 3, expireHours: 48 } }

Digamos que actualizo obj2 con una nueva configuración:

 // defaults let obj2 = { emojiSettings: { success: ":defaultSuccess:" error: ":defaultError:" } warnSettings: { muteThreshold: 2, expireHours: 24 } newConfig: { newOption: 4 } }

Quiero que todas las configuraciones en obj1 permanezcan igual, pero agregue los objetos y las claves que se actualizaron en obj2 .

about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Escribiría una función para comparar profundamente las dos que itera sobre cada propiedad. Si la propiedad no existe en obj1, la agrega. Si la propiedad existe en obj1, verifica si esa propiedad es un objeto (pero no una matriz) y, si lo es, la función recursivamente se llama a sí misma para asegurarse de que todas las propiedades de ese objeto también existan en obj1.

 const updateObject = (o1, o2) => { Object.entries(o2).forEach((prop) => { const propName = prop[0]; if (!o1[propName]) { if (typeof o2[propName] !== 'object' || Array.isArray(o2[propName])) { o1[propName] = o2[propName]; } else { o1[propName] = { ...o2[propName] }; } } else if (typeof o2[propName] === 'object' && !Array.isArray(o2[propName])) { updateObject(o1[propName], o2[propName]); } }); }; updateObject(obj1, obj2);
about 4 years ago · Santiago Trujillo 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!