UNPKG

foop

Version:

interfaces that describe their intentions.

54 lines (45 loc) 1.19 kB
/** @ignore 🚧 wip */ const MapCache = require('./MapCache') const isNil = require('../is/nullOrUndefined') /** Used to stand-in for `undefined` hash values. */ const HASH_UNDEFINED = '__lodash_hash_undefined__' class SetCache { /** * Creates an array cache object to store unique values. * * @constructor * @param {Array} [values] The values to cache. */ constructor(values) { let index = -1 const length = isNil(values) ? 0 : values.length this.__data__ = new MapCache() while (++index < length) { this.add(values[index]) } } /** * Adds `value` to the array cache. * * @memberOf SetCache * @alias push * @param {*} value The value to cache. * @returns {Object} Returns the cache instance. */ add(value) { this.__data__.set(value, HASH_UNDEFINED) return this } /** * Checks if `value` is in the array cache. * * @memberOf SetCache * @param {*} value The value to search for. * @returns {number} Returns `true` if `value` is found, else `false`. */ has(value) { return this.__data__.has(value) } } SetCache.prototype.push = SetCache.prototype.add module.exports = SetCache