Maison  >  Article  >  interface Web  >  Comment parcourir des structures d'objets profondément imbriquées avec une boucle récursive en JavaScript

Comment parcourir des structures d'objets profondément imbriquées avec une boucle récursive en JavaScript

DDD
DDDoriginal
2024-10-22 15:04:02966parcourir

How to Traverse Deeply Nested Object Structures with Recursive Looping in JavaScript

Bouclage récursif d'objets complexes en JavaScript

Votre objectif est de parcourir une structure d'objet profondément imbriquée en JavaScript, en accédant au nom de chaque objet et à son enfants, petits-enfants, etc.

La boucle for...in

Une approche consiste à utiliser la boucle for...in :

<code class="javascript">for (var key in foo) {
    if (key === "child") {
        // Do something with the child
    }
    else if (key === "bar") {
        // Do something with the bar
    }
    else if (key === "grand") {
        // Do something with the grand
    }
}</code>

Gestion des propriétés du prototype

Soyez prudent lorsque vous utilisez for...in car il parcourra également les propriétés héritées du prototype. Pour éviter cela, utilisez la méthode hasOwnProperty :

<code class="javascript">for (var key in foo) {
    if (!foo.hasOwnProperty(key)) continue;  // Skip inherited properties
    if (key === "child") {
        // Do something with the child
    }
    // ...
}</code>

Fonctions récursives

Pour une boucle récursive, pensez à définir une fonction récursive :

<code class="javascript">function eachRecursive(obj) {
    for (var k in obj) {
        if (typeof obj[k] === "object" && obj[k] !== null) {
            eachRecursive(obj[k]);  // Recurse into sub-objects
        }
        else {
            // Do something with key-value pairs
        }
    }
}</code>

Cette fonction traversera l'objet et parcourra de manière récursive tous les objets imbriqués.

Utilisation

Pour utiliser ces solutions, appelez simplement :

<code class="javascript">eachRecursive(foo);</code>

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