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

129
Visualizações
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 Respostas
Responde à pergunta

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 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