diff options
Diffstat (limited to 'node_modules/core-js/modules/esnext.array.unique-by.js')
| -rw-r--r-- | node_modules/core-js/modules/esnext.array.unique-by.js | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/node_modules/core-js/modules/esnext.array.unique-by.js b/node_modules/core-js/modules/esnext.array.unique-by.js new file mode 100644 index 0000000..c7d1bf6 --- /dev/null +++ b/node_modules/core-js/modules/esnext.array.unique-by.js @@ -0,0 +1,38 @@ +'use strict'; +var $ = require('../internals/export'); +var toLength = require('../internals/to-length'); +var toObject = require('../internals/to-object'); +var getBuiltIn = require('../internals/get-built-in'); +var arraySpeciesCreate = require('../internals/array-species-create'); +var addToUnscopables = require('../internals/add-to-unscopables'); + +var push = [].push; + +// `Array.prototype.uniqueBy` method +// https://github.com/tc39/proposal-array-unique +$({ target: 'Array', proto: true }, { + uniqueBy: function uniqueBy(resolver) { + var that = toObject(this); + var length = toLength(that.length); + var result = arraySpeciesCreate(that, 0); + var Map = getBuiltIn('Map'); + var map = new Map(); + var resolverFunction, index, item, key; + if (typeof resolver == 'function') resolverFunction = resolver; + else if (resolver == null) resolverFunction = function (value) { + return value; + }; + else throw new TypeError('Incorrect resolver!'); + for (index = 0; index < length; index++) { + item = that[index]; + key = resolverFunction(item); + if (!map.has(key)) map.set(key, item); + } + map.forEach(function (value) { + push.call(result, value); + }); + return result; + } +}); + +addToUnscopables('uniqueBy'); |
