Maison  >  Article  >  interface Web  >  Comment filtrer un tableau d'objets en fonction d'un tableau de valeurs imbriquées ?

Comment filtrer un tableau d'objets en fonction d'un tableau de valeurs imbriquées ?

DDD
DDDoriginal
2024-10-30 23:46:30796parcourir

How to Filter an Array of Objects Based on a Nested Value Array?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn