|
一个相对不错的地区代码级联实现(1)
我不想多说什么,只想把这个提供给大家也给自己,客户端级连菜单如果数据量很大你必须考虑效率问题!!
//列表节点 function Entry(key,value){ this.key=key; this.value=value; } //有序的映射 function SortedMap(){ this.size=0; this.put = put; this.buffer =new Array(); this.getIndex = getIndex; this.get=get; } function put(entry){ var index = this.getIndex(entry.key); //移动数据 for(var i=this.size;i>index;){ this.buffer[i]=this.buffer[--i]; } this.buffer[index]=entry; this.size++; } function getIndex(key){ if(this.size==0) return 0; var min=0,max=this.size-1; var mid=0; while(min<=max){ mid = (min+max) >> 1; if(key==this.buffer[mid].key){ return mid; } else if(key<this.buffer[mid].key){ max=mid-1; } else{ min=mid+1; } } mid =(min+max) >>1; return mid+1; } function get(key){ var min=0,max=this.size-1; while(min<=max){ var mid=(min+max)>>1; if(key==this.buffer[mid].key){ return this.buffer[mid].value; } else if(key<this.buffer[mid].key){ max=mid-1; } else{ min=mid+1; } } return null; } //一线代码是用程序连接数据库生成的 var map=new SortedMap(); var array_1=new Array(); array_1[0]=new ListBoxItem("110000","北京市",""); array_1[1]=new ListBoxItem("120000","天津市",""); array_1[2]=new ListBoxItem("130000","河北省",""); array_1[3]=new ListBoxItem("140000","山西省",""); array_1[4]=new ListBoxItem("150000","内蒙古自治区","");
|