From cdaefe18f6984d0dadd5ea24dbb8dc9f4de36301 Mon Sep 17 00:00:00 2001 From: Putnam3145 Date: Sun, 7 Aug 2022 17:32:19 -0700 Subject: [PATCH] needs filterMap --- tgui/packages/common/collections.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tgui/packages/common/collections.ts b/tgui/packages/common/collections.ts index 7abe49ff23..a5ccd7003e 100644 --- a/tgui/packages/common/collections.ts +++ b/tgui/packages/common/collections.ts @@ -123,6 +123,26 @@ export const map = iterateeFn => collection => { throw new Error(`map() can't iterate on type ${typeof collection}`); }; +/** + * Given a collection, will run each element through an iteratee function. + * Will then filter out undefined values. + */ +export const filterMap = ( + collection: T[], + iterateeFn: (value: T) => U | undefined +): U[] => { + const finalCollection: U[] = []; + + for (const value of collection) { + const output = iterateeFn(value); + if (output !== undefined) { + finalCollection.push(output); + } + } + + return finalCollection; +}; + const COMPARATOR = (objA, objB) => { const criteriaA = objA.criteria; const criteriaB = objB.criteria;