javascript - Filtrering på et fler-dimensjonalt array i Angular 2-app


Jeg prøver å finne en måte å håndtere filtrering av et array med et array i Angular 2-appen min. Dataene ser slik ut:

  let services = [
          {
              flags: [
                  {
                      action: "Flag One",
                      completed: true,

                  },
                  {
                      action: "Flag Two",
                      completed: false,

                  },
                ],
            ribbons: [
                 {
                      action: 'Ribbon One',
                      active: false,
                  },
                 {
                      action: 'Ribbon Two',
                      active: true,
                  },
            ]
          }
        ]

Nå, hvis jeg vet hvilket element i den andre arrayen jeg skal målrette, kan jeg gjøre dette:

let filteredServices = services.filter(service => service.flags[0].completed === false);

console.dir(filteredServices);

Men generelt vet jeg ikke hvilket element innenfor den indre arrayen jeg skal målrette mot, så hvordan kan jeg skrive en filterfunksjon for å iterere over begge arrayene og filtrere etter det spesifikke elementet jeg leter etter? Ville jeg bruke en kombinasjon av "filter" og "forEach"? Eller finnes det en mer kortfattet måte å gjøre dette på?

Svar #1

Du kan bruke filter med noen

let filteredServices = services.filter((element) => element.flags.some((subElement) => subElement.completed === false));