json - Angular2 filtrera objektarray baserat på värde inuti egenskap (inbäddade filter)


Jag behöver hämta endast objektet som har namnet ... som en deltagare med hjälp av ett filter (pipe).

Varje objekt har en lista med deltagarobjekt. Så här ser det ut (se mitt exempel på Json i slutet)

-object
 -- _id
 -- participants
    -- participant1
    -- participant2

Så här är det jag försökte: (hårdkodat Jack för att få en match...)

import { Pipe, PipeTransform } from "@angular/core";

@Pipe({ name: 'filter' })
export class Gamefilter implements PipeTransform {
  public transform(values: any[], filter: string): string {
    if (!values || !values.length) "";
    if (!filter) return JSON.parse(JSON.stringify(values));

    return JSON.parse(JSON.stringify(
        values.filter((element) => { 
            return element.participants.filter((item)=> {
                return item.name.indexOf("Jack") > 1;
            }); 
        })
        )); 
  }
}

Även om detta inte fungerar, och jag kan inte se misstaget jag gjorde.

Jag försökte detta för (från Filtrering av array av objekt med arrayer baserat på inbäddat värde):

    values.filter((element) => 
element.participants.some((subElement) => subElement.name === "Jack"))
    .map(element => {
        let newElt = Object.assign({}, element); // copies element
        return newElt.participants.filter(subElement => subElement.name === "Jack");
    })

Jag såg också det här inlägget men kunde inte få rätt svar för mig: Filtrering av array baserat på värde i djupt nästlad objekt i JavaScript

Exempel-JSON:

[
  {
    "_id": "5925ae95675e19001106e940",
    "createdOn": "2017-05-24T16:02:29.229Z",
    "participants": [
      {
        "_id": "jack19302",
        "name": "Jack",
        "__v": 0
      },
      {
        "_id": "donald38902",
        "name": "Donald",
        "__v": 0
      }
    ]
  },
  {
    "_id": "5925ae95675e19001106e990",
    "createdOn": "2017-05-24T16:02:29.229Z",
    "participants": [
      {
        "_id": "donald38902",
        "name": "Donald",
        "__v": 0
      }
    ]
  },
    {
    "_id": "5925ae95675e19001106e996",
    "createdOn": "2017-05-24T16:02:29.229Z",
    "participants": [
      {
        "_id": "jack19302",
        "name": "Jack",
        "__v": 0
      }
    ]
  }
]