2017-09-12 1 views
-1

親のJSONをフィルタリングして親のノード名とその中のいくつかの子ノードをフィルタリングしてJSONを作成しようとしています。それをやっている間、私は次のエラー既存のJSONからフィルタリングしてJSONを作成する

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

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

+0

推測の種類は、1305行目で 'a.children.fiter'の代わりに' o.children.filter'を意味しましたか?そのデータに基づいて、その時点で、 'a'は' name'、 'code'、' count'を持ちますが、 'children'はありません。しかし、 'o' *は' children'を持っています – Sidney

+0

エラーは 'TypeError:a.children is undefined'よりシンプルです –

答えて

1

は、あなたが望むこれは入手しますか?

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); 

私は唯一つのインスタンスデータ内の文字列"Male""Female"のそれぞれを見つけることができる、これはそれらを引き出します。

+0

これについては、どのドキュメントからでもアイデアを得るためにもっと読むことができますか?それはマップを減らすフィルタ。ありがとうございます – SNT

+1

これらはすべて 'Array'クラスのメソッドです。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Arrayを参照してください。 – skirtle

関連する問題