## 数据结构 - 字典 字典则是以 `[键,值]` 的形式来存储元素。字典也称作映射。 ### 创建一个字典  以 ECMAScript 6 中 Map 类的实现为基础的, 下边就是我们的 `Dictionary`骨架 ```javascript 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 对象的一个属性。 ```javascript this.has = function(key) { return key in items; }; ``` #### 2. set(key, value) 方法 该方法接受一个 key 和一个 value 作为参数。我们直接将 value 设为 items 对象的 key 属性的值。它可以用来给字典添加一个新的值,或者用来更新一个已有的值。 ```javascript this.set = function(key, value) { items[key] = value; }; ``` #### 3. remove(key) 方法 先搜索 key,然后在删除 ```javascript this.remove = function(key) { if (this.has(key)) { delete items[key]; return true; } return false; }; ``` #### 4. get(key) 方法 如果我们想在字典中查找一个特定的项,并检索它的值,通过 get 方法,get 方法首先会验证我们想要检索的值是否存在(通过查找 key 值),如果存在,将返回该值, 反之将返回一个 undefined 值 ```javascript this.get = function(key) { return this.has(key) ? items[key] : undefined; }; ``` #### 5. values() 方法 这个方法以数组的形式返回字典中所有 values 实例的值 ```javascript this.values = function() { var values = {}; for (let k in items) { if (this.has(k)) { values.push(items[k]); } } return values; }; ``` #### 6. clear()方法、size()方法 、 keys()方法 ```javascript // 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; }; ```