Filtrer un tableau d'objets avec des tableaux de valeurs imbriquées
Filtrer un tableau d'objets en fonction d'une valeur imbriquée peut être un défi courant. Pour résoudre ce problème, examinons le violon fourni :
Tableau d'entrée :
let arrayOfElements = [ { "name": "a", "subElements": [ {"surname": 1}, {"surname": 2} ] }, { "name": "b", "subElements": [ {"surname": 3}, {"surname": 1} ] }, { "name": "c", "subElements": [ {"surname": 2}, {"surname": 5} ] } ];
Sortie souhaitée :
let filteredArray = [ { "name": "a", "subElements": [ {"surname": 1} ] }, { "name": "b", "subElements": [ {"surname": 1} ] } ];
Approche de filtrage originale :
let filteredArray = arrayOfElements.filter((element) => element.subElements.some((subElement) => subElement.surname === 1));
Bien que cette formule filtre le tableau, elle renvoie les objets avec tous les noms de famille au lieu de les supprimer.
Amélioré Méthode de filtrage :
arrayOfElements.map((element) => { return {...element, subElements: element.subElements.filter((subElement) => subElement.surname === 1)} })
Cette méthode utilise l'opérateur de propagation (...) pour créer un nouvel objet pour chaque élément du tableau. À l'intérieur du nouvel objet, la propriété subElements est filtrée pour inclure uniquement ceux avec la valeur de nom de famille souhaitée (nom === 1).
En utilisant cette approche, vous pouvez filtrer des tableaux avec des objets imbriqués arbitrairement profondément en appliquant de manière itérative le fonction map pour accéder et filtrer les données souhaitées.
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!