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

168
Vistas
Cambiar un valor de una clave por cadena variable en objeto anidado

Tengo un objeto de un estado con algunas propiedades por ejemplo

function (location){ obj = { kids : { eyal : 21, noam :15 } pets : { dog : 5, cat :2 } } }

ahora quiero cambiar el valor de eyal

location = "kids.eyal"

si estoy haciendo

setobj((prevobj) => { ...prevobj, [location] : 22 })

crea un nuevo parámetro en obj Kids.eyal = 22 en lugar de cambiar eyal en kids a 22, ¿cómo puedo solucionarlo?

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

0

Creo que quieres algo como esto:

 oldObj = { kids : { eyal : 21, noam :15 } } function updateOneKidAge(obj,theKid) { const [kidName, newAge] = Object.entries(theKid)[0] return { kids : {...obj.kids, [kidName]: newAge}}; } console.log(updateOneKidAge(oldObj, {eyal: 22}))
about 4 years ago · Juan Pablo Isaza Denunciar

0

Lógica.

  • Divida la ubicación en .
  • Recorra la matriz de ubicación excepto el último nodo.
  • Reemplace el último objeto de nodo que es el objetivo requerido con el valor requerido.

violín de trabajo

 const obj = { kids : { eyal : 21, noam :15 }, pets : { dog : 5, cat :2 } }; const targetLocation = "kids.eyal"; const pathArray = targetLocation.split('.'); const lastNode = pathArray[pathArray.length - 1]; let node = obj; pathArray.forEach((path, index) => node = index === pathArray.length - 1 ? node : node [path]); node[lastNode] = 22; console.log(obj);

about 4 years ago · Juan Pablo Isaza Denunciar

0

No puede usar el formato obj.property dentro de [] corchetes. Tendrás que enviar las dos propiedades por separado. Algo como

 location = ["kids","eyal"]

y luego usarlo allí como:

 setobj((prevobj) => { ...prevobj, [location[0]][location[1]] : 22 })

Espero que resuelva el problema.

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