From 948b2e7f16916296806603ab7d0fef87acd9ee15 Mon Sep 17 00:00:00 2001 From: marlon-erler Date: Wed, 24 Jul 2024 23:34:11 +0200 Subject: [PATCH] allow filterObjectsByStringEntries to handle more complex objects --- src/Model/Utility/utility.ts | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/Model/Utility/utility.ts b/src/Model/Utility/utility.ts index d9dab6ef..046d0652 100644 --- a/src/Model/Utility/utility.ts +++ b/src/Model/Utility/utility.ts @@ -29,13 +29,23 @@ export class HandlerManager { } // filters -export function filterObjectsByStringEntries(reference: {[key: string]: string}, objects: any[]): any[] { +export type ComparableObject = {[key: string]: string}; +export function filterObjectsByStringEntries( + reference: ComparableObject, + converter: (T) => ComparableObject, + objects: T[] +): any[] { const matches: any[] = []; object_loop: for (const object of objects) { - reference_entry_loop: for (const referenceEntry of Object.entries(reference)) { + reference_entry_loop: for (const referenceEntry of Object.entries( + reference + )) { const [key, value] = referenceEntry; - if (object[key] != value) continue object_loop + if (value == "") continue reference_entry_loop; + + const comparableObject: ComparableObject = converter(object); + if (comparableObject[key] != value) continue object_loop; } matches.push(object); }