Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

150
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda