From 712e1721e1a5148b5b23c81d34f7f529e31bc789 Mon Sep 17 00:00:00 2001 From: Manish Date: Tue, 22 Aug 2023 11:00:47 +1000 Subject: [PATCH] Data Structures: Perform an Intersection on Two Sets of Data --- Data Structures/setsIntersection.js | 65 +++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 Data Structures/setsIntersection.js diff --git a/Data Structures/setsIntersection.js b/Data Structures/setsIntersection.js new file mode 100644 index 0000000..5381e06 --- /dev/null +++ b/Data Structures/setsIntersection.js @@ -0,0 +1,65 @@ +// https://www.freecodecamp.org/learn/coding-interview-prep/data-structures/perform-an-intersection-on-two-sets-of-data +class Set { + constructor() { + // This will hold the set + this.dictionary = {}; + this.length = 0; + } + // This method will check for the presence of an element and return true or false + has(element) { + return this.dictionary[element] !== undefined; + } + // This method will return all the values in the set + values() { + return Object.keys(this.dictionary); + } + // This method will add an element to the set + add(element) { + if (!this.has(element)) { + this.dictionary[element] = true; + this.length++; + return true; + } + + return false; + } + // This method will remove an element from a set + remove(element) { + if (this.has(element)) { + delete this.dictionary[element]; + this.length--; + return true; + } + + return false; + } + // This method will return the size of the set + size() { + return this.length; + } + // This is our union method + union(set) { + const newSet = new Set(); + this.values().forEach((value) => { + newSet.add(value); + }); + set.values().forEach((value) => { + newSet.add(value); + }); + + return newSet; + } + // Only change code below this line + + intersection(otherSet) { + const intersectionSet = new Set(); + this.values().forEach((value) => { + if (otherSet.has(value)) { + intersectionSet.add(value); + } + }); + return intersectionSet; + } + + // Only change code above this line +}