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

248
Views
Intentando filtrar elementos de una submatriz de objetos profundamente anidada, siga obteniendo la propiedad no existe y vacíe la respuesta de la matriz

Tengo una matriz de objetos, cada uno con su propio subarreglo de objetos.

Estoy tratando de filtrar a través de cada uno de los subarreglos y eliminar cualquier elemento que no coincida con la condición expired === false pero sigo recibiendo un error que dice: Property 'expired' does not exist on type '{ name: string; expired: boolean; }[]'.ts(2339) matriz vacía y no estoy seguro de lo que estoy haciendo mal.

codigosandbox

Mi funcion es esta:

 result.filter(files => files.files.expired === false)

Así es como se ve la estructura del objeto padre:

 const result = [ { type: "Documents", files: [ { name: "file_1", expired: true }, { name: "file_2", expired: false }, { name: "file_3", expired: false }, { name: "file_4", expired: true }, { name: "file_5", expired: false } ] }, { type: "Images", files: [ { name: "file_1", expired: true }, { name: "file_2", expired: false } ] } ]
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Está filtrando la matriz de result , no las sub-matrices.

Esto filtrará las matrices de files en su lugar en la matriz de result

 const result = [{ type: "Documents", files: [{ name: "file_1", expired: true }, { name: "file_2", expired: false }, { name: "file_3", expired: false }, { name: "file_4", expired: true }, { name: "file_5", expired: false } ] }, { type: "Images", files: [{ name: "file_1", expired: true }, { name: "file_2", expired: false } ] } ]; result.forEach(el => el.files = el.files.filter(file => file.expired === false)); console.log(result)

Esto creará una nueva matriz de nuevos objetos:

 const result = [{ type: "Documents", files: [{ name: "file_1", expired: true }, { name: "file_2", expired: false }, { name: "file_3", expired: false }, { name: "file_4", expired: true }, { name: "file_5", expired: false } ] }, { type: "Images", files: [{ name: "file_1", expired: true }, { name: "file_2", expired: false } ] } ]; new_result = result.map(el => ({ ...el, files: el.files.filter(file => file.expired === false) })) console.log(new_result)

about 4 years ago · Juan Pablo Isaza Report

0

Tienes files.files como matriz, por lo que primero debes recorrerlo y luego filtrar, algo así como

 result.map((files) => files.files.filter(file=> file.expired === false));
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!