UNPKG

740 BJavaScriptView Raw
1'use strict';
2var aSet = require('../internals/a-set');
3var SetHelpers = require('../internals/set-helpers');
4var clone = require('../internals/set-clone');
5var getSetRecord = require('../internals/get-set-record');
6var iterateSimple = require('../internals/iterate-simple');
7
8var add = SetHelpers.add;
9var has = SetHelpers.has;
10var remove = SetHelpers.remove;
11
12// `Set.prototype.symmetricDifference` method
13// https://github.com/tc39/proposal-set-methods
14module.exports = function symmetricDifference(other) {
15 var O = aSet(this);
16 var keysIter = getSetRecord(other).getIterator();
17 var result = clone(O);
18 iterateSimple(keysIter, function (e) {
19 if (has(O, e)) remove(result, e);
20 else add(result, e);
21 });
22 return result;
23};