8
votes

Détecter si un objet a des enfants en JavaScript

En JavaScript, vous pouvez obtenir les enfants d'un nœud XML comme celui-ci ... XXX PRE>

Comment puis-je obtenir les enfants d'un objet? P>

function applyData( dataSet ){
    var hasChildren = false;

    for(var i = 0; i < dataSet.childNodeArrayGoesHere.length; i++){
        if(dataSet.detectChildNodesHere){
            hasChildren = true;
        }
    }

    if(hasChildren){
        for(var j = 0; j < dataSet.childNodeArrayGoesHere.length; i++){
            applyData(dataSet[j]);
        }
    } else {
        //apply the key/value pair to an input element

        $("input[name" + dataSet.propertyName + "]").val(dataSet.propertyValue);
    }
}


3 commentaires

Veuillez vous abstenir de changer considérablement le contexte d'une question. Lorsque vous faites cela, vous rendant certaines des réponses existantes inutiles. Essayez de créer une autre question à la place.


@ates - Je comprends bien où vous allez avec cela, mais la question était juste clarifiée imo. J'ai toujours besoin de la collection de "nœuds d'enfants" pour mener à bien ma fonction.


J'ai juste besoin de détecter si une propriété est un "noeud final" essentiellement ... désolé pour l'ambiguïté.


4 Réponses :


0
votes

Ce ne sont pas des enfants, vous avez créé un tableau associatif.

Les accès comme celui-ci: xxx


2 commentaires

Techniquement, JavaScript n'a pas du tout des tableaux associatifs. Juste des tableaux et des objets réguliers.


True, dans ce cas, c'est un objet utilisé comme une matrice associative.



-3
votes

Ce que vous cherchez sont en réalité des clés d'objet. Vous pouvez vérifier si une clé d'objet existe en l'appelant:

votre obj: xxx

Vérifiez s'il est indéfini: xxx

ou xxx

ou si vous faites face à un cas d'utilisation où une clé OBJ La valeur peut être définie sur non définie manuellement: xxx


3 commentaires

obj.key3 === non défini n'est pas un bon moyen de vérifier l'existence de propriétés: Stackoverflow.com/questions/1098040/...


Je pense que cela fixe manuellement la valeur d'une clé OBJ à indéfinir est loin de la meilleure pratique


Il y a au moins 16 personnes qui ne sont pas d'accord avec vous (voir les commentaires à ma réponse). Il existe des cas d'utilisation très réels dans lesquels une propriété peut être définie sur non définie . La propriété peut également être définie sur null , dans laquelle la comparaison de non définie donnera une correspondance.



7
votes

Vous pouvez itérer sur toutes les propriétés d'un objet comme celui-ci : xxx

le HasownProperty () Fonction Vérifie pour vous assurer que la propriété spécifiée existe réellement dans l'objet. L'utilisation de celui-ci dans ce contexte veille à ne pas avoir de propriétés héritées.


2 commentaires

Le pour (var i in o) boucle fonctionne à itérer à travers l'intégralité de l'objet, mais si vous lisez mes modifications, voir que je suis ... essentiellement ... essayer de détecter si quelque chose est un noeud d'extrémité ou non pour l'appliquer à un champ de saisie


Cela ne lit pas les éléments enfants si présents. Je n'ai pas encore de réponse pour ajouter d'autres suggestions.



7
votes

Vous pouvez itérer sur toutes les propriétés d'un objet récursivement comme celui-ci .

Trouver tous les Bodoms finaux, sélectionnez les balises d'entrée correspondantes par le nom et placez la valeur.

J'ai utilisé un objet avec seulement deux niveaux, mais il peut être utilisé avec un objet de n niveaux. xxx


0 commentaires