ListCache.js 2.3 KB
Newer Older
1
import assocIndexOf from './assocIndexOf.js';
徐立's avatar
徐立 committed
2 3

class ListCache {
4 5 6 7 8 9 10 11 12 13
	/**
	 * Creates an list cache object.
	 * 创建一个列表缓存对象。
	 * @private
	 * @constructor
	 * @param {Array} [entries] 要缓存的键值对。
	 */
	constructor(entries) {
		let index = -1;
		const length = entries == null ? 0 : entries.length;
徐立's avatar
徐立 committed
14

15 16 17 18 19 20
		this.clear();
		while (++index < length) {
			const entry = entries[index];
			this.set(entry[0], entry[1]);
		}
	}
徐立's avatar
徐立 committed
21

22 23 24 25 26 27 28 29 30
	/**
	 * Removes all key-value entries from the list cache.
	 * 从列表缓存中删除所有键值项。
	 * @memberOf ListCache
	 */
	clear() {
		this.__data__ = [];
		this.size = 0;
	}
徐立's avatar
徐立 committed
31

32 33 34 35 36 37 38 39 40 41
	/**
	 * Removes `key` and its value from the list cache.
	 * 从列表缓存中删除' key '及其值。
	 * @memberOf ListCache
	 * @param {string} key 要删除的值的键。
	 * @returns {boolean} 如果条目被删除,则返回“true”,否则返回“false”。
	 */
	delete(key) {
		const data = this.__data__;
		const index = assocIndexOf(data, key);
徐立's avatar
徐立 committed
42

43 44 45 46 47 48 49 50 51 52 53 54
		if (index < 0) {
			return false;
		}
		const lastIndex = data.length - 1;
		if (index == lastIndex) {
			data.pop();
		} else {
			data.splice(index, 1);
		}
		--this.size;
		return true;
	}
徐立's avatar
徐立 committed
55

56 57 58 59 60 61 62 63 64 65 66 67
	/**
	 * Gets the list cache value for `key`.
	 * 获取' key '的列表缓存值。
	 * @memberOf ListCache
	 * @param {string} key 要获取的值的键。
	 * @returns {*} 返回条目值。
	 */
	get(key) {
		const data = this.__data__;
		const index = assocIndexOf(data, key);
		return index < 0 ? undefined : data[index][1];
	}
徐立's avatar
徐立 committed
68

69 70 71 72 73 74 75 76 77 78
	/**
	 * Checks if a list cache value for `key` exists.
	 * 检查' key '的列表缓存值是否存在。
	 * @memberOf ListCache
	 * @param {string} key 输入键要检查。
	 * @returns {boolean} 如果' key '的条目存在,则返回' true ',否则返回' false '。
	 */
	has(key) {
		return assocIndexOf(this.__data__, key) > -1;
	}
徐立's avatar
徐立 committed
79

80 81 82 83 84 85 86 87 88 89 90
	/**
	 * Sets the list cache `key` to `value`.
	 * 将列表缓存“键”设置为“值”。
	 * @memberOf ListCache
	 * @param {string} key 要设置的值的键
	 * @param {*} value 要设置的值。
	 * @returns {Object} 返回列表缓存实例。
	 */
	set(key, value) {
		const data = this.__data__;
		const index = assocIndexOf(data, key);
徐立's avatar
徐立 committed
91

92 93 94 95 96 97 98 99
		if (index < 0) {
			++this.size;
			data.push([key, value]);
		} else {
			data[index][1] = value;
		}
		return this;
	}
徐立's avatar
徐立 committed
100 101
}

102
export default ListCache;