字典则是以 [键,值]
的形式来存储元素。字典也称作映射。
� 以 ECMAScript 6 中 Map 类的实现为基础的, 下边就是我们的 Dictionary
骨架
function Dictionary() {
var items = {};
}
然后,我们需要声明一些映射/字典所能使用的方法。
-
set(key,value): 向字典中添加新元素。
-
remove(key): 通过使用键值来从字典中移除键值对应的数据值。
-
has(key): 如果某个键值存在于这个字典中,则返回 true,反之则返回 false。
-
get(key): 通过键值查找特定的数值并返回。
-
clear(): 将这个字典中的所有元素全部删除。
-
size(): 返回字典所包含元素的数量。与数组的 length 属性类似。
-
keys(): 将字典所包含的所有键名以数组形式返回。
-
values(): 将字典所包含的所有数值以数组形式返回。
下边一步一步实现上边的方法
使用 JavaScript 中的 in 操作符来验证一个 key 是否是 items 对象的一个属性。
this.has = function(key) {
return key in items;
};
该方法接受一个 key 和一个 value 作为参数。我们直接将 value 设为 items 对象的 key 属性的值。它可以用来给字典添加一个新的值,或者用来更新一个已有的值。
this.set = function(key, value) {
items[key] = value;
};
先搜索 key,然后在删除
this.remove = function(key) {
if (this.has(key)) {
delete items[key];
return true;
}
return false;
};
如果我们想在字典中查找一个特定的项,并检索它的值,通过 get 方法,get 方法首先会验证我们想要检索的值是否存在(通过查找 key 值),如果存在,将返回该值, 反之将返回一个 undefined 值
this.get = function(key) {
return this.has(key) ? items[key] : undefined;
};
这个方法以数组的形式返回字典中所有 values 实例的值
this.values = function() {
var values = {};
for (let k in items) {
if (this.has(k)) {
values.push(items[k]);
}
}
return values;
};
// 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;
};