最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

怎样利用JS自定义哈希表和顺序列表

来源:懂视网 责编:小采 时间:2020-11-27 19:41:25
文档

怎样利用JS自定义哈希表和顺序列表

怎样利用JS自定义哈希表和顺序列表:/**哈希表*/ var HashMap = function(){ this.table={}; this.count=0;//长度 /**添加对象 * @param key 键 * @param obj 对象 */ this.put=function(key,obj){ var v=this.table[key]; if(typeof(v)=
推荐度:
导读怎样利用JS自定义哈希表和顺序列表:/**哈希表*/ var HashMap = function(){ this.table={}; this.count=0;//长度 /**添加对象 * @param key 键 * @param obj 对象 */ this.put=function(key,obj){ var v=this.table[key]; if(typeof(v)=

/**哈希表*/
var HashMap = function(){
	this.table={};
 	this.count=0;//长度

 	/**添加对象
	* @param key 键
	* @param obj 对象
	*/
	this.put=function(key,obj){
	 var v=this.table[key];
	 if(typeof(v)=="undefined")this.count+=1;
	 this.table[key]=obj;
	};
	/**获得对象
	* @param key 键
	* @return obj 对象
	*/
	this.get=function(key){
	 return this.table[key];
	};
	
	this.contains=function(key){
	return (key in this.table);
	};
	/**删除对象
	* @param key 键
	* @return obj 对象
	*/
	this.remove=function(key){
	 var obj=this.table[key];
	 if(obj != undefined){
	 delete this.table[key];
	 this.count -= 1;
	 }
	 return obj;
	};
	/**清空所有对象*/
	this.clear=function(){
	 this.table={};
 	 this.count=0;
	};
	/**当前大小*/
	this.size=function(){
	return this.count;
	};
	/**是否为空*/
	this.isEmpty=function(){
	return this.count <= 0;
	};
	/**获得所有值*/
	this.values=function(){
	var values = new Array();
	for(var prop in this.table){
	 	values.push(this.table[prop]);
	}
	return values;
	};
	/**获得所有键*/
	this.keys=function(){
	var keys = new Array();
	for(var prop in this.table){
	 	keys.push(prop);
	}
	return keys;
	};
};

/**顺序链表*/
var ArrayList = function(){
	this.count=0;//长度
 	this.initialCapacity = 10;
	this.list=new Array(this.initialCapacity);

	/**添加对象
	* @param obj 对象
	*/
	this.add=function(obj){
 this.list[this.count]=obj;
 this.count+=1;
	};
	/**按索引设置对象
	* @param obj 对象
	*/
	this.set=function(index,obj){
	if(this.list.length<index){
	this.list[index]=obj;
	return true;
	}else return false;
	};
	/**获得对象
	* @param index 索引位
	* @return obj 对象
	*/
	this.get=function(index){
	 return this.list[index];
	};
	/**删除对象
	* @param index 索引位
	* @return obj 对象
	*/
	this.remove=function(index){
	 var obj=null;
	 if(index>=0&&index<this.count){
	 	 obj = this.list[index];
 for (var i = index; i < this.count - 1; i++) {
 this.list[i] = this.list[i + 1];
 }
 this.list[this.count-1] = null;
 this.count-=1; 
	 }
	 return obj;
	};
	/**删除一组对象
	* @param index 索引位
	* @param length 长度
	*/
	this.removeGroup=function(index,length){
	 if(index>=0){
	 var start=index;var end=index+length;
	 	 var counts=0;var lists=[];
 for (var i = 0; i < this.count; i++) {
 	 if(i>=start&&i<end)continue;
 	 lists[lists.length] = this.list[i];
 	 counts++;
 }
 this.list=lists;
 this.count=counts; 
	 }
	};
	/**清空所有对象*/
	this.clear=function(){
	 this.count=0; 
	 this.list=[];
	};
	/**获得链表大小
	* @return 返回大小
	*/
	this.size=function(){
	 return this.count;
	};
	this.getList=function(){
	return this.list;
	};
	this.setList=function(list){
	this.list=list;
	this.count=list.length;
	};
	/**折半查找
	* @param value 对比的数据
	* @return fun 对比方法
	* @return 返回位置,-1为没找到
	*/
	this.bisearch=function(value,fun){
	 var pos=-1;
 var start = 0;
 var end = this.count-1;
 var current = parseInt(this.count/2);
 for(var i=0;i<current;i++){
 	 if(!fun(value,this.list[start])){
 	start =start+1;
 	 }else{
 	 	pos=start;break;
 	 }
 	 if(!fun(value,this.list[current])){
 	current =current+1;if(current>end)break;
 	 }else{
 	 	pos=current;break;
 	 }
 }
 return pos;
	};
	/**顺序查找
	* @param value 对比的数据
	* @return fun 对比方法
	* @return 返回位置,-1为没找到
	*/
	this.search=function(value,fun){
	 var pos=-1;
 for(var i=0;i<this.count;i++){
 	 if(fun(value,this.list[i])){
 	 	pos=i;break;
 	 }
 }
 return pos;
	};
};

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

移动端WEB开发中click,touch,tap事件使用详解

怎样操作页面、可视区、屏幕等宽高属性

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

怎样利用JS自定义哈希表和顺序列表

怎样利用JS自定义哈希表和顺序列表:/**哈希表*/ var HashMap = function(){ this.table={}; this.count=0;//长度 /**添加对象 * @param key 键 * @param obj 对象 */ this.put=function(key,obj){ var v=this.table[key]; if(typeof(v)=
推荐度:
标签: js has hash
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top