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

160
Views
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 answers
Answer question

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 Report
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!