2017-10-20 9 views
1

配列からいくつかの項目をフィルタリングしようとしています。これまでは配列内の項目をフィルタリングすることができましたが、配列要素から子を削除したい場合、私はそうすることができません。 以下の例では、chartsArrayのコード値はAge_Totalです。配列elに私はこの文字列Age_Totalを持っています。それをフィルタリングすると、それは削除されます。しかし、私はフィールドQ0120F_18Pもフィルタリングされていません。この要素は、第4の配列要素のAge_Femaleの下に表示されます。だから私の質問は、chartsArrayを介してどのように反復することができますそれは、親要素と同様に子要素をフィルタすることができます。配列要素からのフィルタリング

https://jsfiddle.net/snt/n16pfgbk/

+0

ここには複数のレベルのネストがあります。いくつのレベルをチェックする必要がありますか? – Piyin

+1

現時点では、私はフェイス2レベルを持っていますが、データが変更された場合(特定のレベルで3レベルになる可能性があります) – SNT

答えて

2

あなたは再帰呼び出しで子供をフィルタリングし、フィルタのコールバックの内側にそれを割り当てることができます。

chartsArray = chartsArray.map(a => a.filter(function code(o) { 
    if (!el.includes(o.code)) { 
     if (o.children) { 
      o.children = o.children.filter(code); 
     } 
     return true; 
    } 
})); 
関連する問題