Skip to content

Instantly share code, notes, and snippets.

@gbhasha
Created November 4, 2018 22:36
Show Gist options
  • Save gbhasha/3f4890d6f24ea76d3fcddaffd792487f to your computer and use it in GitHub Desktop.
Save gbhasha/3f4890d6f24ea76d3fcddaffd792487f to your computer and use it in GitHub Desktop.
Implementing basic set operations - isSuperset, union, intersection and difference
function isSuperset(set, subset) {
for (var elem of subset) {
if (!set.has(elem)) {
return false;
}
}
return true;
}
function union(setA, setB) {
var _union = new Set(setA);
for (var elem of setB) {
_union.add(elem);
}
return _union;
}
function intersection(setA, setB) {
var _intersection = new Set();
for (var elem of setB) {
if (setA.has(elem)) {
_intersection.add(elem);
}
}
return _intersection;
}
function difference(setA, setB) {
var _difference = new Set(setA);
for (var elem of setB) {
if(setA.has(elem))
_difference.delete(elem);
else
_difference.add(elem);
}
return _difference;
}
//Examples
var setA = new Set([1, 2, 3, 4]),
setB = new Set([2, 3]),
setC = new Set([3, 4, 5, 6]);
isSuperset(setA, setB); // => true
union(setA, setC); // => Set [1, 2, 3, 4, 5, 6]
intersection(setA, setC); // => Set [3, 4]
difference(setA, setC); // => Set [1, 2, 5, 6]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment