1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
| function Set() { this.dataStore = []; this.add = add; this.remove = remove; this.size = size; this.union = union; this.contains = contains; this.intersect = intersect; this.subset = subset; this.difference = difference; this.show = show; }
function add(data) { if (this.dataStore.indexOf(data) < 0) { this.dataStore.push(data); return true; } else { return false; } }
function remove(data) { var pos = this.dataStore.indexOf(data); if (pos > -1) { this.dataStore.splice(pos,1); return true; } else { return false; } }
function size() { return this.dataStore.length; }
function show() { return "[" + this.dataStore + "]"; }
function contains(data) { if (this.dataStore.indexOf(data) > -1) { return true; } else { return false; } }
function union(set) { var tempSet = new Set(); for (var i = 0; i < this.dataStore.length; ++i) { tempSet.add(this.dataStore[i]); } for (var i = 0; i < set.dataStore.length; ++i) { if (!tempSet.contains(set.dataStore[i])) { tempSet.dataStore.push(set.dataStore[i]); } } return tempSet; }
function intersect(set) { var tempSet = new Set(); for (var i = 0; i < this.dataStore.length; ++i) { if (set.contains(this.dataStore[i])) { tempSet.add(this.dataStore[i]); } } return tempSet; }
function subset(set) { if (this.size() > set.size()) { return false; } else { for (var member in this.dataStore) { if (!set.contains(member)) { return false; } } } return true; }
function difference(set) { var tempSet = new Set(); for (var i = 0; i < this.dataStore.length; ++i) { if (!set.contains(this.dataStore[i])) { tempSet.add(this.dataStore[i]); } } return tempSet; }
var cis = new Set(); var it = new Set(); cis.add("Clayton"); cis.add("Jennifer"); cis.add("Danny"); it.add("Bryan"); it.add("Clayton"); it.add("Jennifer"); var diff = new Set(); diff = cis.difference(it); console.log(cis.show() + " difference " + it.show() + " -> " + diff.show());
|