Maison >interface Web >js tutoriel >Comment filtrer un tableau d'objets avec des tableaux basés sur une valeur imbriquée ?

Comment filtrer un tableau d'objets avec des tableaux basés sur une valeur imbriquée ?

DDD
DDDoriginal
2024-10-29 03:08:02220parcourir

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

Filtrage d'un tableau d'objets avec des tableaux basés sur une valeur imbriquée

Question : Comment filtrer un tableau d'objets en fonction d'une valeur imbriquée ?

Entrée :

<code class="javascript">let arrayOfElements = [
    {
        "name": "a",
        "subElements": [
            {"surname": 1},
            {"surname": 2}
        ]
    },
    {
        "name": "b",
        "subElements": [
            {"surname": 3},
            {"surname": 1}
        ]
    },
    {
        "name": "c",
        "subElements": [
            {"surname": 2},
            {"surname": 5}
        ]
    }
];</code>

Sortie souhaitée :

<code class="javascript">let filteredArray = [
    {
        "name": "a",
        "subElements": [
            {"surname": 1}
        ]
    },
    {
        "name": "b",
        "subElements": [
            {"surname": 1}
        ]
    }
];</code>

Tentative initiale :

<code class="javascript">let filteredArray = arrayOfElements.filter((element) => element.subElements.some((subElement) => subElement.surname === 1));</code>

Problème :Cette approche renvoie les objets avec tous les noms de famille au lieu de les supprimer.

Solution :

<code class="javascript">arrayOfElements.map((element) => {
    return {...element, subElements: element.subElements.filter((subElement) => subElement.surname === 1)}
})</code>

Explication :

  • Cette approche utilise la méthode map() pour parcourir le arrayOfElements.
  • Pour chaque élément, elle répartit ses propriétés dans un nouvel objet.
  • Il utilise ensuite filter() sur le tableau subElements pour conserver uniquement ceux qui remplissent la condition (nom === 1).
  • Les sous-éléments filtrés sont ensuite utilisés pour remplacer le Tableau de sous-éléments d'origine.

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