字典是一种以键-值为一队存储的数据结构,key-value
key相当于这个value在字典中的索引,所以key不允许重复,查找也会非常快(类似于哈希表)
在JavaScript中字典的基础是Array类,Array在JavaScript中既是数组也是字典
1.定义字典
var dic = new Array(); //定义一个字典
dic['one'] = '1'; // 添加字典的元素( key:value)
dic['three'] = '3';
dic['two'] = '2';
dic['8'] = 'seven';
dic['five'] = '5';
dic['four'] = '4';
dic['9'] = 'nine';
dic['six'] = '6';
dic['7'] = 'eight'
也可以直接定义
dic={'a':1,'b':2,'c':3}
2.遍历字典
for (key in dic){
console.log(key+":"+dic[key]);
}
3.删除字典元素,删除都是删除一对key-value
//方法一
//双引号和单引号是一样的,只是结合使用的时候需要注意
delete dic["one"];
//方法二
delete dic.one
//但是在删除key为数字的时候,有的浏览器会报错,如Chrome
4.更多操作,因为JavaScript中字典是基于Array的,因此有些字典的操作需要我们自己定义
<script>
function add(key, value){ // 添加字典的键值(key:value)
this.dataStorege[key] = value;
}
function display(){ //显示字典中的键值(key:value)
for(var key in this.dataStorege){
console.log(key + " : " + this.dataStorege[key]);
}
}
function find(key){ // 根据键(key)查找对应的值(value),返回值value
return this.dataStorege[key];
}
function remove(key){ // 根据键(key)删除对应的值(value)
delete this.dataStorege[key];
}
function count(){ // 计算字典中的元素个数
var n = 0;
for(var key in Object.keys(this.dataStorege)){
++n;
}
return n;
}
function kSort(){ // 字典按值(value)排序,并输出排序后的结果
var dic = this.dataStorege;
var res = Object.keys(dic).sort();
for(var key in res ){
console.log(res[key] + " : " + dic[res[key]]);
}
}
function vSort(){ // 字典按值(value)排序,并输出排序后的结果
var dic = this.dataStorege;
var res = Object.keys(dic).sort(function(a,b){
return dic[a]-dic[b];
});
for(var key in res ){
console.log(res[key] + " : " + dic[res[key]]);
}
}
function clear(){ // 清空字典内容
for(var key in this.dataStorege){
delete this.dataStorege[key];
}
}
function Dictionary(){
this.dataStorege = new Array(); // 定义一个数组,保存字典元素
this.add = add; // 添加字典内容(key:value)
this.show = show; // 显示字典中的键值
this.find = find; // 根据键(key)查找并返回对应的值(value)
this.remove = remove; // 删掉相对应的键值
this.count = count; // 计算字典中的元素的个数
this.kSort = kSort; // 按键(key)排序
this.vSort = vSort; // 按值(value)排序
this.clear = clear; // 清空字典内容
}
var dic = new Dictionary(); // 构造字典类
dic.add('one',1);
dic.display()
</script>