2017-09-12 2 views
-1

Je tente de créer un JSON en filtrant à partir du JSON parent en filtrant le nom du nœud parent et les quelques nœuds enfants qu'il contient. Tout en faisant, je reçois l'erreur suivanteCréation d'un JSON par filtrage à partir d'un JSON existant

Cannot read property 'filter' of undefined at data.children.filter.map.Object.assign.children.o.children.reduce

https://jsfiddle.net/snt1/nLua0oob/13/

+0

Sorte de conjecture, mais à la ligne 1305, vouliez-vous dire 'o.children.filter' au lieu de' a.children.fiter'? Sur la base des données, à ce stade, 'a' a' name', 'code', et' count', mais pas 'children'. Cependant, 'o' * does * have 'children' – Sidney

+0

l'erreur semble plus simple que celle' TypeError: a.children is undefined' –

Répondre

1

Est-ce que vous voulez?

result = data.children 
    .filter(o => o.name === 'Age') 
    .map(o => Object.assign(
     {}, 
     o, 
     { 
      children: o.children.filter(o => o.name === 'Male' || o.name === 'Female') 
     } 
    )); 

console.log(result); 

Je ne pouvais en trouver un exemple chacune des chaînes "Male" et "Female" dans vos données et ce qui les ébranle.

+0

Pourriez-vous également me faire savoir si je pourrais lire plus à ce sujet de toute la documentation pour avoir l'idée de il carte réduire le filtre. Merci – SNT

+1

Ils sont toutes les méthodes de la classe 'Array', voir https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array – skirtle