J'ai un tableau consistant en un objet qui a un champ de catégorieName (String) et un tableau (plantes).
J'aimerais filtrer à l'aide d'un nom de plante, quelle est la meilleure approche? P>
J'ai essayé avec mais cela ne renvoie que les plantes, ignore la catégorieNameName P> structure p>
4 Réponses :
Utiliser Ce ne sera pas filtré La ou les plantes spécifiques du tableau des plantes mais gardent l'ensemble de la matrice intacte. Il n'est pas clair que vous devez filtrer le sous-réseau ou non p> filtre () code> sur la matrice extérieure et
certains () code> sur les plantes code> interne code> tableau.
Essayez:
this.itemList.map(function(a) { return { categoryName: a.categoryName, plants: a.plants.filter(p => p.name.toLowerCase().includes(this.searchTerm.toLowerCase())) }}).filter(a => a.plants.length > 0)
S'il vous plaît essayez cet exemple
p>
const searchTerm = "Alston"; const itemList = [ { categoryName: "Heating", plants: [ { plantId: 35, name: "Alston Oven", description: "Oven", plantCategoryId: 2, whenCreated: "1519357215942", }, { plantId: 19, name: "Gregs Oven", description: null, plantCategoryId: 2, whenCreated: "1516830724579", }, ], }, { categoryName: "Refrigeration", plants: [ { plantId: 13, name: "Fridge 1 ", description: "Walk in fridge" }, { plantId: 5, name: "Fridge 2 Updated", description: "Description of Fridge 2", }, { plantId: 4, name: "Fridge" }, ], }, ]; const output = itemList.filter((item) => { return item.plants .map((entry) => entry.name.toLowerCase()) .join() .includes(searchTerm.toLowerCase()); }); console.dir(output, { depth: null, color: true });
Si vous voulez simplement filtrer les tableaux code> usines code>, vous n'avez pas besoin d'utiliser mapper code>. Utilisez
foreach () code>, puis réaffectez la propriété code> plantes code> avec le tableau filtré là-bas.
this.itemList.forEach(item =>
item.plants = item.plants.filter(p =>
p.name.toLowerCase().includes(this.searchTerm.toLowerCase())));
Essayez d'utiliser: développeur.mozilla.org/en -Us / Docs / Web / JavaScript / Référence / ...
Êtes-vous sûr que c'est une structure correcte, je suppose que c'est
console code> résultat?