数据结构-javascript实现【字典】


字典:用【键,值】的形式来存储数据,键名用来查询特定元素。

1.字典所使用的的方法

set(key, value): 向字典中添加元素

remove(key): 移除某个元素

has(key): 检查是否存在某个元素

get(key): 通过键值查询某个元素

clear(): 清除字典中的全部元素

size(): 返回字典中所包含元素的数量

keys(): 将字典中所包含的所有键名以数组返回

values(): 将字典中所包含的所有数值以数组返回

2. 字典的实现

class Dictionary {
  constructor(){
    this.items = {};
  }

  has(key) {
    return this.items.hasOwnProperty(key);
  }

  set(key, value) {
    this.items[key] = value;
  }

  remove(key) {
    if(this.has(key)){
      delete this.items[key];
      return true;
    }
    return false;
  }

  get(key) {
    return this.has(key)? this.items[key] : undefined;
  }

  keys() {
    return Object.keys(this.items);
  }

  values() {
    return Object.values(this.items);
  }

  clear() {
    this.items = {};
  }

  size() {
    return Object.keys(this.items).length;
  }

  getItems() {
    return this.items;
  }
}

const dictionary = new Dictionary();
dictionary.set('lucy', 'lucy@126.com');
dictionary.set('jack', 'jack@126.com');
dictionary.set('mike', 'mike@126.com');
console.log(dictionary.size()); // 3
console.log(dictionary.has('lucy')); // true
console.log(dictionary.get('jack')); // 'jack@126.com'
console.log(dictionary.keys()); // ['lucy', 'jack', 'mike']
console.log(dictionary.values());// ['lucy@126.com', 'jack@126.com', 'mike@126.com']
dictionary.remove('lucy');
console.log(dictionary.has('lucy')); // false