J'essaie de filtrer mon tableau qui a une sous-réseau.
Je veux filtrer mon tableau par subaré
mon tableau ressemble à ceci: J'ai essayé ceci à l'aide de linq.js p> mais ce code olso obtient le statut 0 de Chaque branche p> Je veux obtenir seulement l'état = 1 de chaque branche p> attendu: p> merci;) < / p> p>
3 Réponses :
var Branches = [ { Name: "branch1", Screens: [ { Name: "Screen1", Player: { Status: 0 } }, { Name: "Screen2", Player: { Status: 1 } } ] }, { Name: "branch2", Screens: [ { Name: "Screen1", Player: { Status: 0 } }, { Name: "Screen2", Player: { Status: 1 } } ] } ]; var param = 1; console.log(Branches.reduce( (p, c) => ((c.Screens = c.Screens .filter(s => s.Player.Status == param)).length && p.push(c), p), [] ));
J'ai eu une erreur: FIS ne définit pas, j'ai essayé de le remplacer par P mais je n'ai rien eu :(
Quel navigateur utilisez-vous?
J'ai utilisé Google Chrome
HI MAI Les écrans de branches ont été supprimés après le premier filtre. Ex: je veux le statut: 1, dans le filtre suivant, je veux statut: 0, mais tout le statut: 0 a été supprimé?
Désolé, je n'ai pas compris la question?
ow désolé, je veux dire dans mon premier état de filtre: 1 J'ai reçu un résultat correct, mais quand je filtre le statut: 0 Je n'ai rien, quand je regarde mes branches tous les écrans avec statut: 0 était supprimé
Étrange, je reçois des résultats .. 🤨
Vous pouvez mapper les objets et le filtre p> écrans code>.
var branches = [{ Name: 'branch1', Screens: [{ Name: 'Screen1', Player: { Status: 0 } }, { Name: 'Screen2', Player: { Status: 1 } }] }, { Name: 'branch2', Screens: [{ Name: 'Screen1', Player: { Status: 0 } }, { Name: 'Screen2', Player: { Status: 1 } }] }],
wanted = 1,
result = branches.map(({ Screens, ...o }) => ({ ...o, Screens: Screens.filter(({ Player: { Status } }) => Status === wanted) }));
console.log(result);
merci c'est ce que je cherche. , pouvez-vous expliquer la syntaxe '... O' est pour quoi?
... O code> prend le reste de l'objet sans destructures de propriété.
Utilisation de LINQ.JS, vous devez le voir comme sélection des branches avec un ensemble filtré d'écrans. Vous ne voulez probablement pas modifier les éléments existants, vous devez donc en créer de nouveaux.
let status = 1; let result = Enumerable.From(Branches) .Select(({Screens, ...rest}) => ({ Screens: Enumerable.From(Screens) .Where(({Player:{Status}}) => Status === status) .ToArray(), ...rest })).ToArray();
Et si vous n'avez pas de
Statut: 1 code> à l'intérieur? Voulez-vous obtenir l'objet parent? Ou juste le filtrage des réseaux internes?
oui je veux obtenir l'objet parent avec les enfants qui a filtré
@Ninascholz Salut toute autre solution pour cela? Merci