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
|
|
|
}
|