什么是字典
字典:字典存储的是键值对,主要的特征是一一对应,字典中的 key 是不能重复且无序的,value 可以重复。
ES6 中的 Map 就是一个字典结构。
字典常用的方法
- has(key) 判断字典中是否存在这个 key
- set(key, value) 在字典中添加键值对
- remove(key) 从字典中删除 key
- get(key) 获取指定 key 的 value 如果没有返回 undefined
- keys() 获取所有的 keys
- values() 获取所有的 values
- size() 获取字典的键值对的个数
- clear() 清除字典的所有数据
ES6 实现字典结构
- 字典结构的封装
/**
 * 字典数据结构
 * 特点:
 *  1. 字典主要存储的是键值对,主要的特点就是对值的一一对应
 *  2. 字典的key是不能重复的并且是无序的,但是value可以有重复的
 *
 * @class Map_
 */
class Map_ {
  constructor() {
    this.map = {};
  }
}
- has(key) 方法的实现
  // has(key) 判断字典中是否存在这个key
  has(key) {
    return this.map.hasOwnProperty(key);
  }
- set(key, value) 方法的实现
  // set(key, value) 在字典中添加键值对
  set(key, value) {
    this.map[key] = value;
  }
- remove(key) 方法的实现
  // remove(key) 从字典中删除key
  remove(key) {
    if (!this.has(key)) return false;
    delete this.map[key];
  }
- get(key) 方法的实现
 // get(key) 获取指定key的value 如果没有返回undefined
  get(key) {
    return this.has(key) ? this.map[key] : undefined;
  }
- keys() 方法的实现
  // keys() 获取所有的keys
  keys() {
    return Object.keys(this.map);
  }
- values() 方法的实现
  // values() 获取所有的values
  values() {
    return Object.values(this.map);
  }
- size() 方法的实现
  // size() 获取字典的键值对的个数
  size() {
    return this.keys().length;
  }
- clear() 方法的实现
  // clear() 清除字典的所有数据
  clear() {
    this.map = {};
  }
字典结构的总体代码
/**
 * 字典数据结构
 * 特点:
 *  1. 字典主要存储的是键值对,主要的特点就是对值的一一对应
 *  2. 字典的key是不能重复的并且是无序的,但是value可以有重复的
 *
 * @class Map_
 */
class Map_ {
  constructor() {
    this.map = {};
  }
  // has(key) 判断字典中是否存在这个key
  has(key) {
    return this.map.hasOwnProperty(key);
  }
  // set(key, value) 在字典中添加键值对
  set(key, value) {
    this.map[key] = value;
  }
  // remove(key) 从字典中删除key
  remove(key) {
    if (!this.has(key)) return false;
    delete this.map[key];
  }
  // get(key) 获取指定key的value 如果没有返回undefined
  get(key) {
    return this.has(key) ? this.map[key] : undefined;
  }
  // keys() 获取所有的keys
  keys() {
    return Object.keys(this.map);
  }
  // values() 获取所有的values
  values() {
    return Object.values(this.map);
  }
  // size() 获取字典的键值对的个数
  size() {
    return this.keys().length;
  }
  // clear() 清除字典的所有数据
  clear() {
    this.map = {};
  }
}