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

187
Vistas
Agregue datos al objeto anidado usando claves dinámicas

Tengo un objeto vacío estructurado así:

 let users = { "type1": { "group1": { "role1": {} }, "group2": { "role2": {}, "role3": {}, "role4": {} }, }, "type2": { "group1": { "role1": {} }, "group2": { "role2": {} }, "group3": { "role3": {}, "role4": {} } } };

Luego busco a mis usuarios con un tipo, grupo y rol asociados para cada uno. Me gustaría agregar dinámicamente a mis usuarios a mi objeto anterior en la combinación correcta de tipo/grupo/rol, ya que están almacenados en variables.

Intenté algo como esto pero esto está mal:

 fetchedUsers.forEach(user => { users[user.type][user.group][user.role].push(user.email); })

¿Hay alguna manera de hacer esto similar a lo que probé?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

No se puede empujar a un objeto. Tu rol no es una matriz

 let users = { "type1": { "group1": { "role1": {} }, "group2": { "role2": {}, "role3": {}, "role4": {}},}, "type2": { "group1": { "role1": {} }, "group2": { "role2": {}}, "group3": { "role3": {}, "role4": {}}}}; const fetchedUsers = [ {"type":"type1","group": "group2", "role":"role3", "email":"x@useremail.com"}, {"type":"type2","group": "group1", "role":"role1", "email":"y@useremail.com"} ]; fetchedUsers.forEach( ({type,group,role,email}) => users[type][group][role].email = email ); console.log(users)

Si tiene más de un correo electrónico por rol, necesita hacer algunas claves

 let users = { "type1": { "group1": { "role1": {} }, "group2": { "role2": {}, "role3": {}, "role4": {}},}, "type2": { "group1": { "role1": {} }, "group2": { "role2": {}}, "group3": { "role3": {}, "role4": {}}}}; const fetchedUsers = [ {"type":"type1","group": "group2", "role":"role3", "email":"x@useremail.com"}, {"type":"type2","group": "group1", "role":"role1", "email":"y@useremail.com"}, {"type":"type2","group": "group1", "role":"role1", "email":"z@useremail.com"} ]; fetchedUsers.forEach( ({type,group,role,email}) => { const currentRole = users[type][group][role] const len = Object.entries(currentRole).length currentRole[`email${len}`] = email }); console.log(users)

o usar una matriz

 let users = { "type1": { "group1": { "role1": {} }, "group2": { "role2": {}, "role3": {}, "role4": {}},}, "type2": { "group1": { "role1": {} }, "group2": { "role2": {}}, "group3": { "role3": {}, "role4": {}}}}; const fetchedUsers = [ {"type":"type1","group": "group2", "role":"role3", "email":"x@useremail.com"}, {"type":"type2","group": "group1", "role":"role1", "email":"y@useremail.com"}, {"type":"type2","group": "group1", "role":"role1", "email":"z@useremail.com"} ]; fetchedUsers.forEach( ({type,group,role,email}) => { const currentRole = users[type][group][role] currentRole.emails = currentRole.emails || [] currentRole.emails.push(email) }); console.log(users)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Dado users[user.type][user.group][user.role] es un objeto que no puede usar push()

Si inicializa las estructuras de roles vacías como matrices, debería funcionar.

 let users = { "type1": { "group1": { "role1": [] }, "group2": { "role2": [], "role3": [], "role4": [] }, }, "type2": { "group1": { "role1": [] }, "group2": { "role2": [] }, "group3": { "role3": [], "role4": [] } } };
about 4 years ago · Juan Pablo Isaza 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