js之字典的学习和使用

js之字典的学习和使用

2017年10月05日 22:08:52 阅读数:2944 标签: js字典字典数据结构字典的学习和使用字典排序字典操作 更多

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/ganyingxie123456/article/details/78163154

js之字典学习和使用

字典 是一种以键-值对形式存储数据的数据结构,比如:名字-电话号码,通过名字就能找到对应的电话号码,名字就是键(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");          // 删除字典中的键值对
  • 1

运行结果:

这里写图片描述

    console.log(dic.count()); // 统计字典中的元素的个数 
  • 1

运行结果:

这里写图片描述

    dic.kSort();  // 按key排序
  • 1

运行结果:

这里写图片描述

    dic.vSort();  // 按value排序
  • 1

运行结果:

这里写图片描述

    dic.clear();  // 清空所有字典的元素
  • 1

那么,有关字典这种数据结构的学习和使用就到此了,如果在后续使用到有加深的地方,再补充吧~~

你可能感兴趣的:(javascript)