2017-10-20 11 views
1

J'essaie de filtrer quelques éléments d'un tableau. Jusqu'à présent, j'ai été capable de filtrer un élément dans le tableau, mais si je veux retirer un enfant de l'élément tableau, je suis incapable de le faire. Dans l'exemple ci-dessous chartsArray a la valeur de code Age_Total. Dans le tableau el j'ai cette chaîne Age_Total et quand je filtre, il est supprimé. Mais j'ai aussi un champ Q0120F_18P qui n'est pas filtré. Vous pouvez toujours voir cet élément dans le quatrième élément du tableau sous Age_Female. Donc, ma question est comment puis-je parcourir chartsArray où il peut filtrer l'élément de tableau parent ainsi que l'élément enfant.Filtrage à partir d'éléments de tableau

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

+0

Le fait est que vous avez plusieurs niveaux d'imbrication. Combien de niveaux devriez-vous vérifier? – Piyin

+1

A partir de maintenant j'ai 2 niveaux face, il pourrait aller jusqu'à 3 à un certain niveau si les données changent (pourraient) – SNT

Répondre

2

Vous pouvez filtrer les enfants avec un appel récursif et l'assigner à l'intérieur de la fonction de rappel de filtre.

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