`
fackyou200
  • 浏览: 301069 次
  • 性别: Icon_minigender_1
  • 来自: 山西太原
社区版块
存档分类
最新评论

JS实现类拟JAVA中MAP对像的功能

阅读更多
/*
name:    Map.js
author:  WindDC
date:    2006-10-27
content: 本程序用JS实现类拟JAVA中MAP对像的功能
*/
function Node(key,value){//键值对对象
this.key=key;
this.value=value;
}

function Map(){//Map类
this.nodes=new Array();
}

Map.prototype.put=function(key,value){//往容器中加入一个键值对
for(var i=0;i<this.nodes.length;i++)
if(this.nodes[i].key==key){//如果键值已存在,则put方法为更新已有数据
this.nodes[i].value=value;
return;
}
var node=new Node(key,value);
this.nodes.push(node);
return;
}//put
   
Map.prototype.get=function(key){//获取指定键的值
for(var i=0;i<this.nodes.length;i++)
if(this.nodes[i].key==key)
return this.nodes[i].value;
return null;
}//get

Map.prototype.size=function(){//获取容器中对象的个数
return this.nodes.length;
}//size
         
Map.prototype.clear=function(){//清空容器
while(this.nodes.length>0)
this.nodes.pop();      
}//clear

Map.prototype.remove=function(key){//删除指定值
for(var i=0;i<this.nodes.length;i++)
if(this.nodes[i].key==key){
	var newNodes= new Array() ;
	 if(i>0){   
	    newNodes = newNodes.concat(this.nodes.slice(0,i),this.nodes.slice(i+1));
	  }
	else//删除的是第一个元素
		{ 
		   newNodes=this.nodes.slice(1);
		}
		
	this.nodes=newNodes;

}
}//remove


Map.prototype.isEmpty=function(){//是否为空
if(this.nodes.length==0)
return true;
else
return false;
}//isEmpty

Map.prototype.toString=function(){
var str="[";
for(var i=0;i<this.nodes.length;i++){
if(i<this.nodes.length-1)
str=str+this.nodes[i].key+",";
else
str=str+this.nodes[i].key;    
}
str=str+"]";
return str;
}//toString

Map.prototype.toJson=function(){
	var sjson="[";
	for(var i=0;i<this.nodes.length;i++){
		if(i<this.nodes.length-1)
			sjson+="{\""+findObjKV(this.nodes[i].value)+"\"},";
		else
			sjson+="{\""+findObjKV(this.nodes[i].value)+"\"}";  
	}
	sjson+="]";
	return sjson;
}//toJson

Map.prototype.indexOf = function(i){
	return this.nodes[i];
}

//遍历对象key val
function findObjKV(source){
	var result=new Array();
	for(k in source){
		if(source.hasOwnProperty(k)){
			result.push("\""+k+"\":\""+source[k]+"\"");
		}
	}
	return result.join(",");
}

 使用:

var conditionMap = new Map();
conditionMap.put(k,v);

 

分享到:
评论

相关推荐

    js中的类似于java中的map工具对象Map.js

    js终于有了自己的Map了,类似与java的Map对象。此文件是源代码,亲测有类似于java的Map对象的类似方法:put(key,value)、get(key)、keys()、values()、size()、isEmpty()、remove(key)、clear()、element(index)、...

    JS自定义对象实现Java中Map对象功能的方法

    主要介绍了JS自定义对象实现Java中Map对象功能的方法,可实现类似Java中Map对象增删改查等功能,具有一定参考借鉴价值,需要的朋友可以参考下

    java8stream源码-stream8.js:使用Streams的强大功能增强您的Javascript

    java8流源码流8.js 流是一种有效的、功能性的方法,可以减少常见数组操作任务的样板代码。 您将开始更少的编码,更快的编码,并且代码不仅更易于阅读,而且更不容易出错。 安装 Stream8 在凉亭上使用"stream8": "~...

    Java面试宝典-经典

    这两行代码执行后,原始的String对象中的内容到底变了没有? 22 32、是否可以继承String类? 23 33、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别? 23 34、String 和StringBuffer的...

    Java面试宝典2010版

    这两行代码执行后,原始的String对象中的内容到底变了没有? 22 32、是否可以继承String类? 23 33、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别? 23 34、String 和StringBuffer的...

    java面试题大全(2012版)

    这两行代码执行后,原始的String对象中的内容到底变了没有? 22 32、是否可以继承String类? 23 33、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别? 23 34、String 和StringBuffer的...

    最新Java面试宝典pdf版

    这两行代码执行后,原始的String对象中的内容到底变了没有? 22 32、是否可以继承String类? 23 33、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别? 23 34、String 和StringBuffer的...

    Java面试笔试资料大全

    这两行代码执行后,原始的String对象中的内容到底变了没有? 22 32、是否可以继承String类? 23 33、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别? 23 34、String 和StringBuffer的...

    java面试宝典2012

    这两行代码执行后,原始的String对象中的内容到底变了没有? 24 32、是否可以继承String类? 25 33、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别? 25 34、String 和StringBuffer的...

    JAVA面试宝典2010

    这两行代码执行后,原始的String对象中的内容到底变了没有? 22 32、是否可以继承String类? 23 33、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别? 23 34、String 和StringBuffer的...

    Java面试宝典2012新版

    这两行代码执行后,原始的String对象中的内容到底变了没有? 22 32、是否可以继承String类? 23 33、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别? 23 34、String 和StringBuffer的...

    Java面试宝典2012版

    这两行代码执行后,原始的String对象中的内容到底变了没有? 22 32、是否可以继承String类? 23 33、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别? 23 34、String 和StringBuffer...

    JavaScript 引用类型实例详解【数组、对象、严格模式等】

    本文实例讲述了JavaScript 引用类型。...js数组更加类似java的map容器。长度可变,元素类型任意 数组长度随时可变!随时可以修改!(length属性) var arr1 = [123,324,true,'abc',1,4,5,new Date()]; arr1.len

    overpass-frontend:一个JavaScript(NodeJSBrowser)库,可以通过Overpass API轻松地从OpenStreetMap访问数据。 这些对象可以直接与LeafletJS一起使用或导出到GeoJSON。 数据将在本地缓存,可以选择使用LocalStorage(或类似方法)

    一个JavaScript(NodeJS / Browser)库,可通过Overpass API轻松地从OpenStreetMap访问数据。 这些对象可以直接与LeafletJS一起使用或导出到GeoJSON。 数据将缓存在浏览器内存中(永久存储在LocalStorage中,将来...

    JavaScript内核系列

    动态性是指,在一个Javascript对象中,要为一个属性赋值,我们不必事先创建一个字段,只需要在使用的时候做赋值操作即可,如下例: Js代码 1. //定义一个对象 2. var obj = new Object(); 3. //动态创建...

    DWR.xml配置文件说明书(含源码)

    从java中传递null值到javascript是没有任何危险性的,所以DWR将这个作为默认的converter,所以你自己不用再把这个converter添加到配置文件的部分中去. 基本类型的converter转换int,boolean,double等.当然还包括对应的...

Global site tag (gtag.js) - Google Analytics