怎樣利用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)=="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; }; };
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
行動端WEB開發中click,touch,tap事件使用詳解
#以上是怎樣利用JS自訂哈希表和順序列表的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

Netflix上的頭像是你串流媒體身分的視覺化代表。使用者可以超越預設的頭像來展現自己的個性。繼續閱讀這篇文章,了解如何在Netflix應用程式中設定自訂個人資料圖片。如何在Netflix中快速設定自訂頭像在Netflix中,沒有內建功能來設定個人資料圖片。不過,您可以透過在瀏覽器上安裝Netflix擴充功能來實現此目的。首先,在瀏覽器上安裝Netflix擴充功能的自訂個人資料圖片。你可以在Chrome商店買到它。安裝擴充功能後,在瀏覽器上開啟Netflix並登入您的帳戶。導航至右上角的個人資料,然後點擊

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

如何在Eclipse中自訂快捷鍵設定?身為開發人員,在使用Eclipse進行編碼時,熟練快捷鍵是提高效率的關鍵之一。 Eclipse作為一個強大的整合開發環境,不僅提供了許多預設的快捷鍵,還允許使用者根據自己的偏好進行個人化的客製化。本文將介紹如何在Eclipse中自訂快捷鍵設置,並給出具體的程式碼範例。打開Eclipse首先,打開Eclipse,並進入

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

1.下圖是edius預設的螢幕佈局,預設的EDIUS視窗佈局是橫向版式,因此在單一顯示器環境中,許多視窗是重疊在一起的,且預覽視窗為單一視窗模式。 2、您可以透過【檢視】選單列啟用【雙視窗模式】,使預覽視窗同時顯示播放視窗和錄製視窗。 3.您可以透過【檢視功能表列>視窗佈局>常規】來恢復預設螢幕佈局。另外您也可以自訂適合您的佈局方式,並儲存為常用螢幕佈局:將視窗拖曳成適合自己的佈局,然後點擊【檢視>視窗佈局>儲存目前佈局>新建】,在彈出的【儲存目前佈局】小視窗中輸入佈局名稱,按確定

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

在excel表格中,有時候可能需要插入座標軸,能夠更直觀地看到資料的變化趨勢。還有些小夥伴不清楚怎麼在表中插入座標軸,接下來小編就跟大家分享一下excel自訂座標軸刻度的方法吧。 座標軸插入方法: 1、在excel介面中,選取資料。 2、在插入介面中,點選插入長條圖或長條圖。 3、在展開的介面中,選擇形圖類型。 4、在表格右鍵介面中,點選選擇資料。 5、在展開的介面中,進行自訂即可。
