js实现数据结构--字典

什么是字典?

字典也称映射,是一些元素的结合,字典中的元素也是互不相同且不重复的。字典与集合很相似,集合以[值, 值]的形式存储元素,字典则以[键,值]的形式来存储元素。

字典的特点:

  1. 字典中的元素互不相同
  2. 字典中的元素不重复
  3. 字典中的元素以[键,值]的形式存在

生活中字典的典型例子:

生活中字典的例子:如单词和它的释义,地址簿等

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值