Skip to content

Latest commit

 

History

History
116 lines (83 loc) · 2.6 KB

字典.md

File metadata and controls

116 lines (83 loc) · 2.6 KB

数据结构 - 字典

字典则是以 [键,值] 的形式来存储元素。字典也称作映射。

创建一个字典

� 以 ECMAScript 6 中 Map 类的实现为基础的, 下边就是我们的 Dictionary骨架

function Dictionary() {
  var items = {};
}

然后,我们需要声明一些映射/字典所能使用的方法。

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

  • remove(key): 通过使用键值来从字典中移除键值对应的数据值。

  • has(key): 如果某个键值存在于这个字典中,则返回 true,反之则返回 false。

  • get(key): 通过键值查找特定的数值并返回。

  • clear(): 将这个字典中的所有元素全部删除。

  • size(): 返回字典所包含元素的数量。与数组的 length 属性类似。

  • keys(): 将字典所包含的所有键名以数组形式返回。

  • values(): 将字典所包含的所有数值以数组形式返回。

下边一步一步实现上边的方法

1. has(key) 方法

使用 JavaScript 中的 in 操作符来验证一个 key 是否是 items 对象的一个属性。

this.has = function(key) {
  return key in items;
};

2. set(key, value) 方法

该方法接受一个 key 和一个 value 作为参数。我们直接将 value 设为 items 对象的 key 属性的值。它可以用来给字典添加一个新的值,或者用来更新一个已有的值。

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

3. remove(key) 方法

先搜索 key,然后在删除

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

4. get(key) 方法

如果我们想在字典中查找一个特定的项,并检索它的值,通过 get 方法,get 方法首先会验证我们想要检索的值是否存在(通过查找 key 值),如果存在,将返回该值, 反之将返回一个 undefined 值

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

5. values() 方法

这个方法以数组的形式返回字典中所有 values 实例的值

this.values = function() {
  var values = {};
  for (let k in items) {
    if (this.has(k)) {
      values.push(items[k]);
    }
  }
  return values;
};

6. clear()方法、size()方法 、 keys()方法

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

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

// keys
this.keys = function() {
  var nameKey = [];
  for (let key in items) {
    nameKey.push(key);
  }
  return namekey;
};