JavaScript的字典通过Set进行了实现,关于Set的详情请看MDN文档。
以下是自己通过JavaScript简单的实现
function Set(){
// 函数中的私有变量
var items = {};
// 判断是否有某个属性,使用的是in方法(可以包括继承的属性),而不是使用的Object.hasOwnProperty()
this.has = function(key){
return key in items;
};
// 设置属性和值
this.set = function(key, value){
items[key] = value;
};
// 获取某个属性对应的值
this.get = function(key){
return this.has(key) ? items[key] : undefined;
};
// 删除某个属性,此时需要判断items中是否有这个属性,有就删除并返回true,没有返回false
this.remove = function(key){
if(this.has(key)){
delete items[key];
return true;
}
return false;
};
// 获取所有属性的值,返回的是一个数组
this.values = function(){
var values = [];
for (const key in items) {
// for in 循环会将items所继承的属性也遍历到,为了防止得到遍历的属性,加入如下判断进行过滤
if (this.has(key)) {
values.push(items[key])
}
}
return values;
};
// 获取所有的属性及其值
this.getItems = function(){
return items;
}
}
var dictionary = new Set();
dictionary.set('李四', 'lisi');
dictionary.set('王五', 'wangwu');
dictionary.get('王五') // "wangwu"
dictionary.get('李四') // "lisi"
dictionary.getItems() // {李四: "lisi", 王五: "wangwu"}
dictionary.values() // ["lisi", "wangwu"]
dictionary.remove('王五') // true
dictionary.values() // ["lisi"]
网友评论