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

228
Visualizações
elimine duplicados de una matriz cuando use la relación elocuente de laravel en vuejs

Así que tengo una matriz que tiene un objeto dentro debido a la relación elocuente en laravel. Así que la matriz se ve algo como esto:

Documentos:

 [ { "id": 6, "name": "document", "supplier": { "id": 5, "name": "HBC", } }, { "id": 5, "name": "document", "supplier": { "id": 5, "name": "HBC", } }, { "id": 4, "name": "document", "supplier": { "id": 4, "name": "Avrora", } } ]

Ahora estoy tratando de usar lodash para obtener proveedores únicos, por lo que en el ejemplo anterior me gustaría recuperar HBC y Avrora sin otro HBC.

Lo que estoy intentando:

 CollectionSuppliers () { return uniq(this.Documents.supplier.map(({ name }) => name)) },

pero estoy recibiendo un error:

 Cannot read properties of undefined (reading 'map')
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

No se pueden leer las propiedades de undefined (leyendo 'mapa')

Esto significa que lo que sea que esté llamando al map no está definido. Lo estás llamando:

 this.Documents.supplier

entonces eso significa que el supplier no es propiedad de this.Documents . ¡Cual es verdad! Porque this.Documents es una matriz de objetos con un supplier , pero la matriz en sí no tiene un supplier .

Lo que probablemente quisiste hacer fue:

 return uniq(this.Documents.map(doc => doc.supplier.name))

Esto asigna cada documento solo al nombre del proveedor y luego llama a uniq en la matriz de nombres de proveedores.

over 4 years ago · Santiago Trujillo Relatório

0

Está accediendo al supplier en el objeto this.Documents , pero no existe, por lo que produce un error

 this.Documents.supplier.map(({ name }) => name)

Tiene que mapear sobre this.Documents no en this.Documents.supplier como:

 CollectionSuppliers() { return uniq(this.Documents.map((o) => o.supplier.name)); }

o

 CollectionSuppliers() { return uniq(this.Documents.map(({ supplier: { name } }) => name)); }

NOTA: No necesita lodash para esto, también puede obtener elementos únicos usando Vanilla JS:

 const Documents = [ { id: 6, name: "document", supplier: { id: 5, name: "HBC", }, }, { id: 5, name: "document", supplier: { id: 5, name: "HBC", }, }, { id: 4, name: "document", supplier: { id: 4, name: "Avrora", }, }, ]; const result = [...new Set(Documents.map((o) => o.supplier.name))]; console.log(result);

over 4 years ago · Santiago Trujillo 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