Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

209
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!