In mathematical terms, the symmetrical difference of two sets is expressed as A △ B or A ⊖ B (i.e. set of all uncommon elements between "A" and "B"). It is basically the opposite of intersection.
To get the symmetric difference of two JavaScript Set objects, you can:
- Create a copy of one of the existing sets;
- Loop over the other set, and check if the current value exists in the copy set:
- If it does, then remove the common value from the copy set;
- If it doesn't, then add the value to the copy set.
For example:
function symmetricDifference(setA, setB) {
const diff = new Set(setA);
for (const elem of setB) {
const operation = (diff.has(elem)) ? 'delete' : 'add';
diff[operation](elem);
}
return diff;
}
const setA = new Set([1, 2, 3, 4]);
const setB = new Set([3, 4, 5, 6]);
console.log(symmetricDifference(setA, setB)); // Set(4) {1, 2, 5, 6}
The ternary inside the loop is meant as a shorthand for if/else. You can replace it with if/else if you want.
This post was published by Daniyal Hamid. Daniyal currently works as the Head of Engineering in Germany and has 20+ years of experience in software engineering, design and marketing. Please show your love and support by sharing this post.