Removing duplicates from a set test broken?

In this exercise we are going to perform a union on two sets of data. We will create a method on our Set data structure called union . This method should take another Set as an argument and return the union of the two sets, excluding any duplicate values.

For example, if setA = ['a','b','c'] and setB = ['a','b','d','e'] , then the union of setA and setB is: setA.union(setB) = ['a', 'b', 'c', 'd', 'e'] .

function Set() {
    // the var collection will hold the set
    var collection = [];
    // this method will check for the presence of an element and return true or false
    this.has = function(element) {
        return (collection.indexOf(element) !== -1);
    };
    // this method will return all the values in the set
    this.values = function() {
        return collection;
    };
    // this method will add an element to the set
    this.add = function(element) {
        if(!this.has(element)){
            collection.push(element);
            return true;
        }
        return false;
    };
   // this method will remove an element from a set
    this.remove = function(element) {
        if(this.has(element)){
           var index = collection.indexOf(element);
            collection.splice(index,1);
            return true;
        }
        return false;
    };
    // this method will return the size of the set
    this.size = function() {
        return collection.length;
    };
    // change code below this line
this.union = function(setB) {
    let union = collection.concat(setB);
   
    for(let i = 0; i < union.length; i++){
    while(union.indexOf(union[i]) != union.lastIndexOf(union[i])) {
        union.splice(i,1);
        }
    }
    return union;   
    };
    // change code above this line
}

The error message I get back says the proper collection was returned… I tested with my own tests and show that I am returning the correct union for any two given arrays. Not sure why it won’t pass the automated tests. Anyone have any ideas?

1 Like

Did you ever get this figured out? I’m having the same problem.