Ich habe das Gefühl, dass dies schwer zu erklären ist, aber ich gebe Observables von meinem generischen DB-Service an meine Komponenten weiter.Filtern des Arrays eines beobachtbaren Objekts, das gefiltert wird TypeScript
Die Methoden wie folgt aussehen:
getCollectionThroughDivisionId(id: UUID): Observable<T[]> {
return this._table.watch().map(returnedObjects =>
returnedObjects.filter(returnedObject => returnedObject.divisionId == id)
);
}
Die obige Methode gibt eine beobachtbare Anordnung eines generischen Objekts, gefiltert durch seine divisionId
Die Dinge, die ich eine Methode benötigen, die innerhalb der ein Array-Filter returnedObject für eine ID
getCollectionThroughUserId(id: UUID): Observable<T[]> {
return this._table.watch().map(returnedObjects =>
returnedObjects.filter(returnedObject => returnedObject.userId.filter(x => x == id))
);
}
der Parameter userId ist ein Array von IDs, aber das standardmäßig die gesamte Kollektion der Rückkehr (ohne thr aufgrund eines Fehlers).
edit:
Das Objektmodell:
export class Task {
id: string;
name: string;
userId: string[];
projectId: string;
public constructor(init?: Partial<ITask>) {
Object.assign(this, init);
}
}
Json Beispiel:
{
"id": "TA18XVBJ3584ZM3" ,
"name": "User documentation & technical documentation" ,
"projectId": "PRYH3C72C6CQKZS" ,
"userId": [
"USGC6W4RCERY2ET",
"USKWQYHKB8E3X2U"
]
}
Das Ziel: jede Aufgabe durchlaufen, überprüfen Sie die userId Array, wenn es das übergebene userId enthält
Filter ist wahrscheinlich nicht die richtige Methode hier zu verwenden, Sie sollten wahrscheinlich stattdessen map verwenden, um die returnedObjects Objekten zuzuweisen, die weniger userIDs haben. :) – toskv
Ich verstehe nicht ganz, was Sie meinen, ich muss jede userId in jedem Objekt überprüfen. Kannst du mir ein Beispiel geben? – Laurens
nur um das klar zu machen. Was Sie tun möchten, ist Benutzer-IDs aus der zurückgegebenenObject.userId -Eigenschaft herauszufiltern. Wenn Sie {userId: [1,2]} und id = 1 haben, sollten Sie {userId: [1]} zurückerhalten? – toskv