Describiré la situación para mayor claridad. tengo una matriz como esta
animalsArray = { animalID : number, animalName: string, animalDescription: string, animalChild: animalsArray[] } Ahora tengo que filtrar estos animales usando animalName de la entrada del usuario por campo de texto. Algunos animales pueden tener un número n de animalChild o ninguno o animalChild puede tener otro animalChild dentro de él.
Ya tengo un código como este
public animalsArray:animalsArray[] this.filteredanimalsArray.next( this.animalsArray.filter(item => (item.animalName.toLowerCase().indexOf(search) > -1)) ); Para filtrar la matriz de animalsArray principal y funciona bien, pero la entrada del usuario no pasa por las matrices secundarias.
¿Como puedó resolver esté problema? Gracias por adelantado
Tal vez podrías usar recursividad como esta:
function filterAnimals(animals, name) { return animals.filter(animal => { const matching = animal.animalName.toLowerCase() === name.toLowerCase(); const hasChildMatch = Array.isArray(animal.animalChild) && filterAnimals(animal.animalChild, name).length > 0; return matching || hasChildMatch; }); } const search = 'leon'; const filterdAnimals = filterAnimals(animalsArray, search);