使用JS模拟Map容器

本文介绍了一个使用JavaScript模拟Map容器的实现方法。通过定义一个Map函数并为其添加put、get、remove等方法,实现了类似Map的基本功能。此外,还介绍了如何使用new关键字创建对象实例,并通过控制台输出验证了各项功能的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、前言

自己对JS的了解也不是很深入。最近看了一个视频,讲述JS的深入用法,感觉很有意思,就选择里面的一个小Demo(模拟Map容器)来体会一下JS的强大之处。

2、思想

主要使用JS中对象的特殊性,使用obj[key]=value的特性,来完成Map容器的K-V存储、获取、修改、删除、判断、遍历等。

3、JS代码解释及分析

//模拟Map集合
function Map(){
    var obj = {};

    //添加put方法
    this.put = function(key,value){
        obj[key] = value;
        console.log("添加数据成功:" + key + "--" + value);
    }

    //添加get方法
    this.get = function(key){
        return obj[key];
    }

    //添加删除方法
    this.remove = function(key){
        delete obj[key];
        console.log("删除数据成功:" + key );
    }

    //添加容器长度
    this.size = function(){
        var count = 0;
        for(var attr in obj){
            count++;
        }
        return count;
    }

    //添加是否包含的key的方法
    this.contains = function(key){
        var flag = false;
        for(var k in obj){
            if(key == k){
                flag = true;
            }
        }
        return flag;
    }

    //判断容器是否为空
    this.isEmpty = function(){
        if(this.size() == 0){
            return true;
        }
        return false;
    }

    //遍历map
    this.each = function(){
        for(var k in obj){
            console.log(k + "--" + this.get(k));
        }
    }

}

/**
    程序的关键在此处开始。JS中使用的new关键字,但是并非和java中的对象一样。
java对象是有构造函数的,而JS中没有。function Map()貌似像Map的构造函数,其实
不然,只不过是一个普通函数,Map()就是为了调用function Map()的。所以Map也可
以改成其他名称。
    new关键字只是创建后后面函数对应的一个对象,然后使用变量接收。详细的new解释
可以参照:http://www.cnblogs.com/onepixel/p/5043523.html
*/
var map = new Map();

//控制台结果输出
console.log("集合是否为空:" + map.isEmpty());
map.put("1","judy");
map.put("2","lucy");
map.put("3","lily");
console.log("集合是否为空:" + map.isEmpty());
console.log("查询key为2的值" + map.get("2"));
map.put("2","擎天柱");
console.log("修改key为2的值为擎天柱");
console.log("查询key为2的值" + map.get("2"));
map.remove("2");
console.log("查询key为2的值" + map.get("2"));
console.log("map集合的长度为:" + map.size());
console.log("map集合是否包含key为1和4:" + map.contains("1") + "," + map.contains("4"));
map.each();

4、结果验证

集合是否为空:true
添加数据成功:1--judy
添加数据成功:2--lucy
添加数据成功:3--lily
集合是否为空:false
查询key为2的值lucy
添加数据成功:2--擎天柱
修改key为2的值为擎天柱
查询key为2的值擎天柱
删除数据成功:2
查询key为2的值undefined
map集合的长度为:2
map集合是否包含key为1和4:true,false
1--judy
3--lily
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智_永无止境

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值