Filtrer un tableau d'objets avec des tableaux basés sur une valeur imbriquée
En programmation, il est souvent nécessaire de filtrer des tableaux en fonction de critères spécifiques. Lorsqu'il s'agit de structures d'objets complexes avec des tableaux imbriqués, le processus de filtrage peut devenir plus difficile. Cette question explore un problème dans lequel un développeur doit filtrer un tableau d'objets en fonction de la valeur d'un objet imbriqué.
La transformation souhaitée consiste à filtrer tous les éléments des sous-tableaux qui ne correspondent pas à une valeur spécifique. Le tableau d'entrée contient des objets avec une propriété "name" et un tableau "subElements", chacun contenant des objets avec une propriété "nom". L'objectif est de supprimer tous les sous-éléments où « nom » n'est pas égal à 1.
Dans un premier temps, le développeur a tenté la logique de filtrage suivante :
let filteredArray = arrayOfElements.filter((element) => element.subElements.some((subElement) => subElement.surname === 1));
Alors que cette approche identifiait les objets avec au moins un sous-élément valide, il n'a pas réussi à supprimer les sous-éléments non valides. Pour résoudre ce problème, nous pouvons utiliser un mécanisme de filtrage plus complet :
arrayOfElements.map((element) => { return {...element, subElements: element.subElements.filter((subElement) => subElement.surname === 1)} })
Ce code mis à jour utilise la méthode "map" pour parcourir le tableau. Il préserve les objets d'origine et crée de nouveaux objets avec des tableaux de "sous-éléments" modifiés. La méthode "filtre" est utilisée pour supprimer les sous-éléments qui ne correspondent pas à la valeur "nom de famille" de 1.
En incorporant cette technique de filtrage, le développeur peut supprimer efficacement les sous-éléments non valides et réaliser la transformation souhaitée. du tableau d'objets.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!