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.
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 } ] } ]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)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));