nope/lib/helpers/setMethods.ts

54 lines
1.1 KiB
TypeScript
Raw Normal View History

2021-03-12 07:34:22 +00:00
/**
* @author Martin Karkowski
* @email m.karkowski@zema.de
* @create date 2021-03-11 17:17:50
2021-08-17 15:52:46 +00:00
* @modify date 2021-08-10 16:55:51
2021-03-12 07:34:22 +00:00
* @desc [description]
*/
/**
* Helper Function which will determine the Difference between set01 and set02.
* If values are in set02 and not in set01 they will be putted into added. If
* items are in set01 but not in set02 they will be added to removed.
*
* @export
* @template T
* @param {Set<T>} set01 Base Set
* @param {Set<T>} set02 Set to compare it with
2021-12-04 07:25:26 +00:00
* @return {*}
2021-03-12 07:34:22 +00:00
*/
2021-12-04 07:25:26 +00:00
export function determineDifference<T>(
set01: Set<T>,
set02: Set<T>
): {
added: Set<T>;
removed: Set<T>;
2021-08-17 15:52:46 +00:00
} {
2021-03-12 07:34:22 +00:00
const added = new Set<T>();
2021-08-17 15:52:46 +00:00
const removed = new Set<T>();
2021-03-12 07:34:22 +00:00
2021-08-17 15:52:46 +00:00
// We iterate over the set01 and
// set02. If elements of set01 arent
// present in set02 => they have been
// removed
for (const item of set01) {
if (!set02.has(item)) {
removed.add(item);
}
}
2021-03-12 07:34:22 +00:00
2021-08-17 15:52:46 +00:00
// If elements of set02 arent
// present in set01 => they have been
// added
for (const item of set02) {
2021-03-12 07:34:22 +00:00
if (!set01.has(item)) {
added.add(item);
}
}
return {
added,
2021-12-04 07:25:26 +00:00
removed,
2021-03-12 07:34:22 +00:00
};
2021-12-04 07:25:26 +00:00
}