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

265
Vistas
¿Cómo realizar una asignación opcional profunda en Javascript?

Digamos que tengo un objeto llamado foo y me gustaría realizar la siguiente operación:

foo.bar.baz.qwer.asdf = 5;

El problema es que la bar puede no existir, pero si existe, entonces el baz dentro de ella puede no existir, etc.

Pensé que sería capaz de hacer algo como esto:

foo?.bar?.baz?.qwer?.asdf = 5 , pero, por desgracia, ese tipo de encadenamiento solo parece funcionar con la recuperación de valores, no con el establecimiento de valores.

El comportamiento deseado es que si algo como baz ya existe, entonces se accede a ese objeto (y se mantienen sus miembros existentes), pero si baz no existe, entonces esa propiedad se crea sobre la marcha.

Es decir, digamos que solo existía foo.bar . Luego, después de la operación de asignación anterior, el objeto resultante sería:

 foo { bar: { baz: { qwer: { asdf: 5 } } } }

Entonces mi pregunta es: ¿se puede hacer esto con construcciones de sintaxis de lenguaje existentes, o se debe crear una función auxiliar? Si es así, ¿tiene este tipo de función un nombre que pueda buscar y hacer referencia?

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

0

He escrito esto:

 function setProperty(obj, property, value) { const properties = property.split('.'); const lastProperty = properties.pop(); for (let prop of properties) { if (!obj[prop]) { obj[prop] = {}; } obj = obj[prop]; } obj[lastProperty] = value; } const startObj = {'a': {}}; setProperty(startObj, 'abcde', 'e is the best letter'); console.log(startObj);

Sin embargo, tendrá comportamientos inesperados si existe una de las propiedades intermedias pero no es un objeto. Por ejemplo, prueba la función anterior con el objeto inicial {a:{b:2}}

Además, tenga en cuenta que el significado de obj cambia a medida que la función procesa. Al principio, se refiere al objeto base, pero luego se refiere a cada objeto anidado durante el ciclo.

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