| | |
| | | 'use strict'; |
| | | var $ = require('../internals/export'); |
| | | var IS_PURE = require('../internals/is-pure'); |
| | | var getBuiltIn = require('../internals/get-built-in'); |
| | | var call = require('../internals/function-call'); |
| | | var aCallable = require('../internals/a-callable'); |
| | | var anObject = require('../internals/an-object'); |
| | | var speciesConstructor = require('../internals/species-constructor'); |
| | |
| | | |
| | | // `Set.prototype.intersection` method |
| | | // https://github.com/tc39/proposal-set-methods |
| | | $({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { |
| | | $({ target: 'Set', proto: true, real: true, forced: true }, { |
| | | intersection: function intersection(iterable) { |
| | | var set = anObject(this); |
| | | var newSet = new (speciesConstructor(set, getBuiltIn('Set')))(); |
| | | var hasCheck = aCallable(set.has); |
| | | var adder = aCallable(newSet.add); |
| | | iterate(iterable, function (value) { |
| | | if (hasCheck.call(set, value)) adder.call(newSet, value); |
| | | if (call(hasCheck, set, value)) call(adder, newSet, value); |
| | | }); |
| | | return newSet; |
| | | } |