-1
votes

Filtre Sub Tableau

J'essaie de filtrer mon tableau qui a une sous-réseau. Je veux filtrer mon tableau par subaré mon tableau ressemble à ceci: xxx

J'ai essayé ceci à l'aide de linq.js xxx

mais ce code olso obtient le statut 0 de Chaque branche

Je veux obtenir seulement l'état = 1 de chaque branche

attendu: xxx

merci;) < / p>


3 commentaires

Et si vous n'avez pas de Statut: 1 à 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


3 Réponses :


0
votes

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), []
));


7 commentaires

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 .. 🤨



0
votes

Vous pouvez mapper les objets et le filtre écrans code>.

p>

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


2 commentaires

merci c'est ce que je cherche. , pouvez-vous expliquer la syntaxe '... O' est pour quoi?


... O prend le reste de l'objet sans destructures de propriété.



0
votes

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


0 commentaires