//创建字典map的构造函数,字典也是由键值对组成的
function Dictionary() {
//字典的属性
this.items={};
//字典的操作方法
//在字典中添加键值对
Dictionary.prototype.set=function (key,value) {
this.items[key]=value;
}
//判断该字典中是否由某个key存在
Dictionary.prototype.has=function (key) {
return this.items.hasOwnProperty(key);
}
//从字典中移除元素
Dictionary.prototype.remove=function (key) {
//1.移除之前先判断在字典中是否有该元素
if(!this.has(key)){
return false;
}
//2.有则直接从字典中删除该元素
delete this.items[key];
return true;
}
//根据key获取对应的value
Dictionary.prototype.get=function (key) {
if(!this.has(key)){
return undefined;
}
//key存在直接返回对应value
return this.items[key];
}
//获取所有的keys
Dictionary.prototype.keys=function () {
return Object.keys(this.items);
}
//获取所有的value
Dictionary.prototype.values=function () {
return Object.values(this.items);
}
//获取size:其实就是上面提到的keys的大小,有多少个key
Dictionary.prototype.size=function () {
return this.keys().length();
}
//清空字典
Dictionary.prototype.clear=function () {
this.items=[];
}
}
/* 在自己封装一个数据结构的套路:如封装树,图,链表,队列,字典等
function Name(){
//借助于说明实现,就定义什么,如,队列借助于数组,则写this.items=[];.
//字典借助于对象,则写this.items={};
//每个元素又都有自己的结构的,比如树 的节点node,需要写一个内部类,如链表中除了存放元素值,还存放前/后指向
function node(val){
//这里面写node的自己属性
this.val=val;
this.left=null;
this.right=null;
}
//接下来是封装该数据结构的方法,1判断该元素是否存在,2插入,3删除,4遍历元素,5遍历元素值(键值对形式的写遍历元素值),6获取该数据结构的大小,7清空
//统一形式如下:
Name.prototype.方法名=function(形参){ //不需要传参的不用写形参
//对于插入操作,删除操作,需要先判断该元素是否存在在操作,不存在返回false
}
//遍历方法:分为遍历key和遍历value两种,对于直接是建立在数组基础上的,直接遍历数组
Name.prototype.遍历方法名=function(){
//元素以对象形式存在的直接使用对象的内置方法,如字典
this.Object.keys(this.items);
//遍历所有的值
this.Object.values(this.items);
}
}
*/