Problem with the test for union set?

Tell us what’s happening:
Can somebody please explain why the union method does not pass the tests? All the tests i’ve done returns the right result.

Your code so far


class Set {
constructor() {
    this._collection = []
}

print() {
    return console.log(this._collection)
}

add(item) {
    if (this.has(item)) {
        return false
    }
    this._collection = [...this._collection, item]
    return true
}

remove(item) {
    if(this.has(item)) {
        this._collection = this._collection.filter(value => value !== item)
        return true
    }
    return false
}

size() {
    return this._collection.length
}

has(item) {
    return this._collection.indexOf(item) !== -1
}

union(set) {
    const setOnlyUniqueItems = set._collection.filter(item => !this.has(item))
    this._collection = [...this._collection, ...setOnlyUniqueItems]
    return this._collection
}
}

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36.

Challenge: Perform a Union on Two Sets

Link to the challenge:
https://www.freecodecamp.org/learn/coding-interview-prep/data-structures/perform-a-union-on-two-sets

union should return a new Set you are returning an Array from that method.

You are also missing a method named values which was in the initial challenge code for the function. It looked like below, but since you are using the class syntax, you will have to modify it a little.

    this.values = function() {
        return collection;
    };