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

149
Vistas
Cómo recuperar la propiedad del objeto pero también establecerla si no está definida, sin repetición

TL;DR

¿Cómo puedo simplificar este código para que el nombre de propiedad largo store.user[userId].order[orderId].items solo se especifique una vez?

 if (!store.user[userId].order[orderId].items) store.user[userId].order[orderId].items = new Set(); if (store.user[userId].order[orderId].items.has('apples')) store.user[userId].order[orderId].items.add('oranges');

Detalle

Tengo una propiedad de objeto muy larga que hace que el código sea difícil de leer. Me gustaría usar una variable como alias para simplificar el código, así:

 let items = store.user[userId].order[orderId].items; if (items.has('apples')) items.add('oranges');

Sin embargo, si la propiedad aún no se ha establecido, obtengo errores. Entonces necesito definir un objeto predeterminado:

 let items = store.user[userId].order[orderId].items || new Set(); if (items.has('apples')) items.add('oranges');

Sin embargo, mientras esto funciona en un objeto existente, si se llamó al new Set() , todavía necesito volver a colocar la nueva instancia en el objeto largo para conservarlo:

 let items = store.user[userId].order[orderId].items || new Set(); if (!store.user[userId].order[orderId].items) store.user[userId].order[orderId].items = items; if (items.has('apples')) items.add('oranges');

Que tipo de derrota el propósito.

¿Hay alguna manera de que pueda usar esta variable como un alias para la propiedad más larga, mientras proporciono y establezco un valor predeterminado si la propiedad aún no existe, pero solo necesito especificar el nombre largo de la propiedad una vez ?

Si bien mi caso de ejemplo aquí es un poco artificial, me encuentro mucho con esta situación cuando estoy recorriendo datos. El mismo código se ejecuta en cada iteración, pero a medida que encuentra diferentes datos entrantes, necesita agregar estructuras existentes o crearlas si aún no existen, por lo que crear todas las propiedades por adelantado no es realmente una opción, ya que no No sabrá qué propiedades crear hasta que esté en medio del procesamiento de los datos.

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

0

En caso de que esté accediendo a un objeto que podría estar anidado dentro de opcional indefinido, use este método.

Para establecer una fusión nula (ponga un valor si la variable es nula o indefinida) use esto:

 let a = bla.bla.mightByNullOrUndefined?.obj?.nested a ??= somethingElse
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