uniq
baseUniq的实现是uniqBy(iteratee)和uniqWith(comparator)的基础所以很有必要搞懂
import SetCache from './SetCache.js' // 基于Hash的缓存结构
import arrayIncludes from './arrayIncludes.js' // 判断某个元素是否在数组中
import arrayIncludesWith from './arrayIncludesWith.js' // 判断某个元素(符合comparator条件)的元素是否在数组中
import cacheHas from './cacheHas.js' // 判断该缓存是否有某个元素
import createSet from './createSet.js' // 创建一个set数据结构(内部对+0 -0作统一处理)
import setToArray from './setToArray.js' // set 转 array
/** Used as the size to enable large array optimizations. */
const LARGE_ARRAY_SIZE = 200 // 大数组的最大容量
/**
* The base implementation of `uniqBy`.
*
* @private
* @param {Array} array The array to inspect.
* @param {Function} [iteratee] The iteratee invoked per element.
* @param {Function} [comparator] The comparator invoked per element.
* @returns {Array} Returns the new duplicate free array.
*/
function baseUniq(array