阅读 13

数据结构与算法 javascript描述-字典

什么是字典

字典的主要操作

代码实现


/**
 * @description 在字典中我们是用键值对来存储数据
 */

const assert = require("assert");

class Dictionary {
  constructor() {
    this.items = {};
  }
  // 向字典添加新元素
  set(key, value) {
    this.items[key] = value;
  }
  // 从字典中移除键对应的值
  remove(key) {
    if (!this.has(key)) {
      return false;
    }
    delete this.items[key];
    return true;
  }
  // 判断字典中是否含有某个键
  has(key) {
    return this.items.hasOwnProperty(key);
  }
  // 返回键对应的值
  get(key) {
    return this.has(key) ? this.items[key] : undefined;
  }
  // 清空
  clear() {
    this.items = {};
  }
  // 字典中元素数量
  size() {
    return Object.keys(this.items).length;
  }
  // 返回字典中所有键名组成的数组
  keys() {
    const keys = [];
    for (let key in this.items) {
      if (this.has(key)) {
        keys.push(key);
      }
    }
    return keys;
  }
  // 返回字典中所有键值组成的数组
  values() {
    const values = [];
    for (let key in this.items) {
      if (this.has(key)) {
        values.push(this.items[key]);
      }
    }
    return values;
  }
  // 查看字典元素
  getItems() {
    return this.items;
  }
}

// test case
const d = new Dictionary()
d.set('address', 'jiangxi')
d.set('sex', 'girl')
d.set('name', 'fade')
// console.log(d.has('name'))
// console.log(d.getItems())
assert.strictEqual(d.size(), 3)
d.set('name', 'custom')
assert.strictEqual(d.get('name'), 'custom')
d.remove('name')
assert.strictEqual(d.size(), 2)
console.log(d.keys())
console.log(d.values())
console.log(d.getItems())

复制代码
关注下面的标签,发现更多相似文章
评论