RenaiApp/src/renderer/services/util/set.ts

28 lines
608 B
TypeScript

/**
* @see https://github.com/tc39/proposal-set-methods
*/
export function symmetricDifference<T>(iterable1: Iterable<T>, iterable2: Iterable<T>): Set<T> {
const set = new Set<T>();
const addDifferent = (i1: Iterable<T>, i2: Iterable<T>): void => {
for (const item1 of i1) {
let isDifferent = true;
for (const item2 of i2) {
if (item1 === item2) {
isDifferent = false;
break;
}
}
if (isDifferent) {
set.add(item1);
}
}
};
addDifferent(iterable1, iterable2);
addDifferent(iterable2, iterable1);
return set;
}