2017年10月05日 22:08:52 阅读数:2944 标签: js字典字典数据结构字典的学习和使用字典排序字典操作 更多
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/ganyingxie123456/article/details/78163154
字典 是一种以键-值对形式存储数据的数据结构,比如:名字-电话号码,通过名字就能找到对应的电话号码,名字就是键(key),电话号就是值(value)。
字典中的键,是值在字典中的索引。
对于javascript来说,字典类(Dictionary)的基础是Array类,js中的Array既是一个数组,同时也是一个字典。
以下是通过3个示例来加深字典这种数据结构的理解和使用。
示例一:字典的创建和使用
var dic = {c:4, a:2, d:3, b:1}; // 定义一个字典
console.log("输出最初的字典元素: ");
for(var key in dic){
console.log("key: " + key + " ,value: " + dic[key]);
}
console.log("字典元素按key值排序: ");
var res = Object.keys(dic).sort();
for(var key in res){
console.log("key: " + res[key] + " ,value: " + dic[res[key]]);
}
console.log("字典元素按value值排序: ");
var res2 = Object.keys(dic).sort(function(a,b){ return dic[a]-dic[b]; });
for(var key in res2){
console.log("key: " + res2[key] + " ,value: " + dic[res2[key]]);
}
运行结果:
示例二: 简单的字典的操作
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';
for(var key in dic){ // 输出字典元素,如果字典的key是数字,输出时会自动按序输出
console.log(key + ' : ' + dic[key]);
}
运行结果:
var res1 = Object.keys(dic).sort(); // 字典元素按key值排序
for(var key in res1){
console.log(res1[key] + " : " + dic[res1[key]]);
}
运行结果:
var res2 = Object.keys(dic).sort(function(a,b){ return dic[a]-dic[b]; }); // 字典元素按value值排序
for(var key in res2){
console.log(res2[key] + ' : ' + dic[res2[key]]);
}
运行结果:
delete dic['one']; // 删除元素(方法一)
delete dic['six'];
for(var key in dic){
console.log(key + ' : ' + dic[key]);
}
运行结果:
delete dic.three; // 删除元素(方法二)
delete dic.four;
for(var key in dic){
console.log(key + ' : ' + dic[key]);
}
运行结果:
注意:第二种方式删除时,在Chrome浏览器测试,不能删除key为数字的情况,比如以下操作就会报错:
delete dic.7; // 报错 : Uncaught SyntaxError: Unexpected number
delete dic.'7'; // 报错 : Uncaught SyntaxError: Unexpected string
示例三: 更加全面的字典操作和使用
function add(key, value){ // 添加字典的键值(key:value)
this.dataStore[key] = value;
}
function show(){ //显示字典中的键值(key:value)
for(var key in this.dataStore){
console.log(key + " : " + this.dataStore[key]);
}
}
function find(key){ // 根据键(key)查找对应的值(value),返回值value
return this.dataStore[key];
}
function remove(key){ // 根据键(key)删除对应的值(value)
delete this.dataStore[key];
}
function count(){ // 计算字典中的元素个数
var n = 0;
for(var key in Object.keys(this.dataStore)){
++n;
}
return n;
}
function kSort(){ // 字典按值(value)排序,并输出排序后的结果
var dic = this.dataStore;
var res = Object.keys(dic).sort();
for(var key in res ){
console.log(res[key] + " : " + dic[res[key]]);
}
}
function vSort(){ // 字典按值(value)排序,并输出排序后的结果
var dic = this.dataStore;
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.dataStore){
delete this.dataStore[key];
}
}
function Dictionary(){
this.dataStore = 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'); // 添加字典的元素( key:value)
dic.add('three', '3');
dic.add('two', '2');
dic.add('8', 'seven');
dic.add('five', '5');
dic.add('four', '4');
dic.add('9', 'nine');
dic.add('six', '6');
dic.add('7', 'eight');
dic.show(); // 显示字典中的键值对
运行结果:
console.log("one: " + dic.find("one")); // 通过键(key)查找对应的值(value)
console.log("7: " + dic.find("7"));
运行结果:
dic.remove("9"); // 删除字典中的键值对
运行结果:
console.log(dic.count()); // 统计字典中的元素的个数
运行结果:
dic.kSort(); // 按key排序
运行结果:
dic.vSort(); // 按value排序
运行结果:
dic.clear(); // 清空所有字典的元素
那么,有关字典这种数据结构的学习和使用就到此了,如果在后续使用到有加深的地方,再补充吧~~