Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

126
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda