javascript中模拟实现java语言中的map

//javascript中模拟实现java语言中的map

实现代码:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<script type="text/javascript">

//private

var obj={};//空的对象容器,用于承装键值对

function Map()

{

//put方法

this.put=function(key,value)

{

obj[key]=value;//把键值对绑定到js对象上

}

//用户用去map容器的个数

this.size=function()

{

//定义一个变量用于记录个数

var count=0;

for(var attr in obj)

{

count++;

}

return count;

}

//根据key得到value值

this.get=function(key)

{

/**

因为在js中如果变量为0,在判断的条件中表示为false(类型自动转换)

*/

if(obj[key]||obj[key]===0||obj[key]===false)

{

return obj[key];

}

else

{

return null;

}

}

//根据key删除

this.remove=function(key)

{

if(obj[key]||obj[key]===0||obj[key]===false)

{

delete obj[key];

}

}

//遍历map中的元素

this.eachMap=function(fun)

{

for(var attr in obj)

{

fun(attr,obj[attr]);

}

}

}

//模拟java中的map

var m=new Map();

m.put("1",‘徐守威‘);

m.put("2",25);

m.put("3",true);

m.put("4",new Date());

//console.log(m.size());

//console.log(m.get("1"));

//m.remove("1");

//console.log(m.get("1"));

m.eachMap(function(key,value){

console.log(key+" : "+value)

});

</script>

</head>

<body>

</body>

</html>

时间: 2024-08-05 13:08:53

javascript中模拟实现java语言中的map的相关文章

JavaScript中模拟实现Java的集合类Map的常用方法

JavaScript中模拟实现Java的集合类Map的常用方法 (function Map(){ var size = 0, map = {}, strundefined; function MapCache() { } MapCache.prototype.put = function (key, value){ if ( key === null || key === undefined){ throw new Error(" null or undefined is not a illeg

Java语言中:float、double数据类型在内存中是如何存储的

引用参考 https://www.cnblogs.com/chenmingjun/p/8415464.html#4291528 https://blog.csdn.net/yansmile1/article/details/70145416 java语言中,float类型数字在计算机中用4个字节(32位)来存储.double类型占用8个字节(64位). 从存储结构和算法上来讲,double和float是一样的,不一样的地方仅仅是float是32位的,double是64位的,所以double能存储

Java语言中String累的总结

String类 1.Java.lang包简介 java.lang包是java内置的一个基础包,其中包含了一系列程序中经常要用到的类: 在默认情况下,每个java程序都会自动导入该包,因此无需在程序中显式地声明. 2.String类 Java语言中,字符串是String类的对象: Java语言中,String是引用数据类型: 可以通过使用String类提供的方法来完成对字符串的操作: 创建一个字符串对象之后,将不能更改构成字符串的字符: 每当更改了字符串版本时,就创建了一个新的字符串对象,并在其内

Java语言中extend和implement的区别

Java语言并不支持多重继承,而只能继承一个类,不过我们可以使用implements来实现多个接口. extends继承的父类:不能声明为final或者定义为abstract: implements实现接口interface,用逗号分开就好: 如:class A extends B implements C, D, E interface的引入是为了部分地提供多继承的功能. 在interface中只需声明方法头,而将方法体留给实现的class来做. 这些实现的class的实例完全可以当作inte

Java语言中Object对象的hashCode()取值的底层算法是怎样实现的?

Java语言中,Object对象有个特殊的方法:hashcode(), hashcode()表示的是JVM虚拟机为这个Object对象分配的一个int类型的数值,JVM会使用对象的hashcode值来提高对HashMap.Hashtable哈希表存取对象的使用效率. 关于Object对象的hashCode()返回值,网上对它就是一个简单的描述:"JVM根据某种策略生成的",那么这种策略到底是什么呢?我有一个毛病,遇到这种含糊其辞的东西,就想探个究竟,所以,本文就将hashCode()本

浅谈Java语言中try{}catch{}和finally{}的执行顺序问题

浅谈Java语言中try{}catch{}和finally{}的执行顺序问题 2019-04-06  PM  13:41:46  1. 不管有没有出现异常,finally块中代码都会执行: 2. 当try和catch中有return时,finally仍然会执行: 3. finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的:

Java语言中的Class类

基本概念 在Object类中定义了以下的方法,此方法将被所有子类继承 public final Class getClass() 这个方法的返回值类型是一个Class类,此类是Java反射的源头,是实际上所谓反射从程序的运行结果来看也很好理解,即:可以通过对象反射求出类的名称. 对象照镜子后可以得到的信息:某个类的属性.方法和构造器.某个类到底实现了哪些接口.对于每个类而言,JRE都为其保留一个不变的Class类型的对象.一个Class对象包含了特定某个结构(class.interface.en

java语言中的varargs

java语言中的varargs允许调用者传递数量不定的参数,并传入的数量不定的实参转化为数组形式的形参. 那么不传递任何参数,或者传入null时,形参的值是什么呢?下面是测试代码和运行结果: 1 private void test1(int... args) { 2 if (args != null) { 3 System.out.println("[test1] args.length = " + args.length); 4 } else { 5 System.out.print

Go语言中的map(十一)

map是一种无序的基于 key-value 的数据结构,Go语言中的map是引用类型,所以跟切片一样需要初始化才能使用. 定义map 定义 map 的语法如下: map[keyType]ValueType // keyType 键的类型 // ValueType 键对应的值的类型 定义 map 而不初始化时,默认值等于 nil,此时不能直接赋值的,如: func main() { var a map[string]int // 定义了map fmt.Println(a==nil) // true