28 lines
608 B
TypeScript
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;
|
|
}
|