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

192
Views
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')
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

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.

about 4 years ago · Juan Pablo Isaza Report

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

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!