Comment puis-je rechercher récursivement une arborescence d'objets et renvoyer l'objet correspondant en fonction d'une clé / valeur en utilisant JavaScript / Prototype 1.7
J'ai quelques imbriqués les données de l'objet et je veux de recherche et de retour de l'objet correspondant en fonction de l'id.
var data = [{id: 0, name: 'Template 0', subComponents:[
{id: 1, name: 'Template 1', subItems:[
{id: 2, name: 'Template 2', subComponents:[{id: 3, name: 'Template 3'}], subItems: [{id: 4, name: 'Template 4'}]}
]}
]}
];
Donc, je veux faire quelque chose comme ceci
getObjectByKeyValue({id: 3})
et de l'avoir de retour
{id: 3, name: 'Template 3'}
C'est une sorte de doit être fait de manière générique, parce que j'ai des sous-éléments, ET les sous-composants qui peuvent avoir chacun des enfants.
J'ai essayé cette aide d'un Prototype de 1,7 et pas de chance - je pense que cette fouille un tableau, et pas un arbre, avec ses sous-nœuds:
data.find(function(s){return s.id == 4;})
Merci d'avance!!!!!!
source d'informationauteur Devin McQueeney
Vous devez vous connecter pour publier un commentaire.
Je suis allé un itinéraire légèrement différent et fait le
findKey
méthode d'un Objet protype:Qui vous adresser directement à l'objet de données, en passant la clé/valeur que vous recherchez:
Noter que cette fonction permet de retrouver un objet à partir de n'importe quelle touche:
Voir l'exemple → (ouvrez la console pour afficher le résultat)
Pas le meilleur de la et de la solution finale.
Mais vous pouvez obtenir un début pour ce que vous êtes à la recherche...
Veuillez voir ma solution ci-dessous ou http://jsfiddle.net/8Y6zq/:
Dans cette mise en œuvre, nous pouvons utiliser la recherche par CLÉ ou le SÉLECTEUR (eg.
"<paren_key>.<child_key_1>.<child_key_2>. ... <child_key_N>"
)Dans le cas où vous vraiment besoin d'une recherche par le biais de votre arbre de données retourner tous les résultats (pas une clé unique), ici, c'est un peu une version modifiée de la mVChr réponse: