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

204
Vistas
Establezca el valor en el objeto en la clave dinámica, posiblemente más allá del primer alcance dado

Tengo 2 cadenas proporcionadas por el usuario que actúan como una clave y un valor. Digamos, por ejemplo, "foo" y "Hello World!" . ¡Tengo un objeto que quiero modificar y configuro obj.foo en Hello World! .

El problema es que la clave puede conducir a un objeto anidado indefinidamente. Por ejemplo, debería poder usar la clave foo.bar[baz].qux o cualquier secuencia de sintaxis JS extraña como esa para establecer un valor dentro de un objeto anidado, o declarar uno si es necesario.

Además, tendré que acceder a estos valores con otra cadena proporcionada por el usuario que podría tener un formato diferente (por ejemplo, foo[bar][baz][qux] en su lugar). ¿Hay alguna manera de hacer todo esto sin usar eval() ?

Antes de que alguien lo marque, esta pregunta no es un duplicado de la estructura de cambios de un objeto javascript porque

  1. Esa pregunta no aborda la última parte de esta,
  2. Tiene 7 años, y la interacción con los objetos se ha vuelto mucho más fácil con las actualizaciones (¿quizás mi pregunta sería más fácil de responder con las versiones recientes?) y
  3. Tampoco aborda el uso de [] (no es un problema tan grande, hasta que haya personas que usen ambos tipos en una expresión larga)

 const key = "foo.bar"; const key2 = "foo[bar].baz"; const val = "Hello World!"; let obj = {} obj[key] = val; /* Doesn't work. Object is: * {"foo.bar": "Hello World!"} * but intended output is * {"foo": {"bar": "Hello World!"}} */ obj[key2] = val; // Output: {"foo[bar].baz": "Hello World!"} // Intended: {"foo": {"bar": {"baz": "Hello World!"}}} console.log(obj);

about 4 years ago · Juan Pablo Isaza
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