什么是字典?
字典也称映射,是一些元素的结合,字典中的元素也是互不相同且不重复的。字典与集合很相似,集合以[值, 值]的形式存储元素,字典则以[键,值]的形式来存储元素。
字典的特点:
- 字典中的元素互不相同
- 字典中的元素不重复
- 字典中的元素以[键,值]的形式存在
生活中字典的典型例子:
生活中字典的例子:如单词和它的释义,地址簿等
js实现定义字典及一些基本方法:
首先是定义字典的结构及一些基本的方法,代码如下:
//定义字典
function Dictionary() {
var items = {};
//定义一些基本的方法
//查看某个键值是否在该字典中
this.has = function (key) {
return key in items;
}
//像字典中添加新元素
this.set = function (key, value) {
items[key] = value;
}
//通过使用键值从字典中删除该键值所对应的数据值
this.delete = function (key) {
if (this.has(key)){
delete items[key];
return true;
}
return false;
}
//通过键值查找特定的数值并返回
this.get = function (key) {
return this.has(key) ? items[key] : undefined;
}
//将字典所包含的所有数值以数组的形式返回
this.values = function () {
var values = [];
for (var k in items){
if (this.has(k)){
values.push(items[k]);
}
}
return values;
}
//将字典所包含的所有键值以数组的形式返回
this.keys = function () {
return Object.keys(items);
}
//将这个字典中的所有元素都删除
this.clear = function () {
items = {};
}
//返回字典所包含元素的数量
this.size = function () {
return items.length;
}
//返回items变量
this.getItems = function () {
return items;
}
}
下面是简单的使用Dictionary类,代码如下:
//使用Dictionary类
var dictionary = new Dictionary();
//给新的字典添加三个元素
dictionary.set('Tom','tom@email.com');
dictionary.set('jack','jack@email.com');
dictionary.set('rose','rose@email.com');
//查看字典是否有Tom这个键值
console.log(dictionary.has('Tom'));//输出true
//返回字典所有元素的键值
console.log(dictionary.keys());//输出['Tom','Jack','rose']
//返回字典所有元素的数值
console.log(dictionary.values());//输出['tom@email.com','jack@email.com','rose@email.com']
//返回字典中某个键值所对应的数值
console.log(dictionary.get('rose'));//输出rose@email.com
//返回字典的大小
console.log(dictionary.size());//输出3
//删除某个键值所对应的元素
dictionary.delete('rose');
console.log(dictionary.keys());//输出['Tom','Jack']
console.log(dictionary.values());//输出['tom@email.com','jack@email.com']
console.log(dictionary.getItems());//输出 Object{Tom:'tom@email.com',Jack:'jack@email.com'}
//清空字典
dictionary.clear();
console.log(dictionary.size());//输出0