src/lib/collections/hash-set.js
function (other) {
        assertNotNull(other);

        if (this.count() === 0) {
            this.unionWith(other);
            return;
        }

        else if (other === this) {
            this.clear();
            return;
        }

        // If other is a HashSet, it has unique elements according to its equality comparer,
        // but if they're using different equality comparers, then assumption of uniqueness
        // will fail. So first check if other is a hashset using the same equality comparer;
        // symmetric except is a lot faster if we can assume uniqueness

        if (areEqualityComparersEqual(this, other)) {
            var table = this.table;

            forOf(other, function (element) {
                if (!table.remove(element)) {
                    table.add(element, null);
                }
            });
        }
        else {
            this.symmetricExceptWith(new HashSet(other, this.comparer));
        }
    }
function (other) {
        assertNotNull(other);

        if (this.count() === 0) {
            this.unionWith(other);
            return;
        }

        else if (other === this) {
            this.clear();
            return;
        }

        // If other is a HashSet, it has unique elements according to its equality comparer,
        // but if they're using different equality comparers, then assumption of uniqueness
        // will fail. So first check if other is a hashset using the same equality comparer;
        // symmetric except is a lot faster if we can assume uniqueness

        if (areEqualityComparersEqual(this, other)) {
            var table = this.table;

            forOf(other, function (element) {
                if (!table.remove(element)) {
                    table.add(element, null);
                }
            });
        }
        else {
            this.symmetricExceptWith(new HashSet(other, this.comparer));
        }
    }
function ( other ) { assertNotNull ( other ) ; if ( this . count ( ) === 0 ) { this . unionWith ( other ) ; return ; } else if ( other === this ) { this . clear ( ) ; return ; } // If other is a HashSet, it has unique elements according to its equality comparer, // but if they're using different equality comparers, then assumption of uniqueness // will fail. So first check if other is a hashset using the same equality comparer; // symmetric except is a lot faster if we can assume uniqueness if ( areEqualityComparersEqual ( this , other ) ) { var table = this . table ; forOf ( other , function ( element ) { if ( ! table . remove ( element ) ) { table . add ( element , null ) ; } } ) ; } else { this . symmetricExceptWith ( new HashSet ( other , this . comparer ) ) ; } }
Modifies the current set so that it contains only elements that are present
either in the current set or in the specified collection, but not both.
@param {Iterable} other The collection to compare to the current set.
Modifies the current set so that it contains only elements that are present either in the current set or in the specified collection but not both .