1 var baseIndexOf = require('./baseIndexOf'),
2 cacheIndexOf = require('./cacheIndexOf'),
3 createCache = require('./createCache');
5 /** Used as the size to enable large array optimizations. */
6 var LARGE_ARRAY_SIZE = 200;
9 * The base implementation of `_.uniq` without support for callback shorthands
13 * @param {Array} array The array to inspect.
14 * @param {Function} [iteratee] The function invoked per iteration.
15 * @returns {Array} Returns the new duplicate free array.
17 function baseUniq(array, iteratee) {
19 indexOf = baseIndexOf,
20 length = array.length,
22 isLarge = isCommon && length >= LARGE_ARRAY_SIZE,
23 seen = isLarge ? createCache() : null,
27 indexOf = cacheIndexOf;
31 seen = iteratee ? [] : result;
34 while (++index < length) {
35 var value = array[index],
36 computed = iteratee ? iteratee(value, index, array) : value;
38 if (isCommon && value === value) {
39 var seenIndex = seen.length;
41 if (seen[seenIndex] === computed) {
50 else if (indexOf(seen, computed, 0) < 0) {
51 if (iteratee || isLarge) {
60 module.exports = baseUniq;