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

236
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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