Maison > interface Web > js tutoriel > le corps du texte

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

DDD
Libérer: 2024-10-30 23:46:30
original
794 Les gens l'ont consulté

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}
        ]
    }
];
Copier après la connexion

Sortie souhaitée :

let filteredArray = [
    {
        "name": "a",
        "subElements": [
            {"surname": 1}
        ]
    },
    {
        "name": "b",
        "subElements": [
            {"surname": 1}
        ]
    }
];
Copier après la connexion

Approche de filtrage originale :

let filteredArray = arrayOfElements.filter((element) => element.subElements.some((subElement) => subElement.surname === 1));
Copier après la connexion

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)}
})
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!