code: function baseUniq(array, isSorted, callback) {
        var index = -1,
            indexOf = getIndexOf(),
            length = array ? array.length : 0,
            isLarge = createCache && !isSorted && indexOf === baseIndexOf && length >= LARGE_ARRAY_SIZE,
            result = [];
  
        if (isLarge) {
          var seen = createCache();
          indexOf = cacheIndexOf;
        } else {
          seen = callback ? getArray() : result;
        }
        while (++index < length) {
          var value = array[index],
              computed = callback ? callback(value, index, array) : value;
  
          if (isSorted
                ? !index || seen[seen.length - 1] !== computed
                : indexOf(seen, computed) < 0
              ) {
            if (callback || isLarge) {
              seen.push(computed);
            }
            result.push(value);
          }
        }
        if (!isLarge && callback) {
          releaseArray(seen);
        }
        return result;
      }
docs: The base implementation of `_.uniq` without support for callback shorthands
  or `thisArg` binding.
  
  @private
  @param {Array} array The array to process.
  @param {boolean} [isSorted=false] A flag to indicate that `array` is sorted.
  @param {Function} [callback] The function called per iteration.
  @returns {Array} Returns a duplicate-value-free array.