js模擬實現雜湊表

2022-03-06 12:12:38 字數 2428 閱讀 2245

在演算法中,尤其是有關陣列的演算法中,雜湊表的使用可以很好的解決問題,所以這篇文章會記錄一些有關js實現雜湊表並給出解決實際問題的例子。

說明: 這篇部落格所寫並不是真正意義的雜湊表,只是與雜湊表的使用有相似之處。

屬性的列舉:

var person =;

for (var prop in

person)

輸出:

即對於物件而言,我們可以使用for in來列舉物件的屬性。

屬性的刪除

var person =;

var ifremove =delete person.name;

for (var prop in

person)

console.log(ifremove);

物件的屬性可以通過 delete 來刪除,並且會有乙個返回值。 如下:

注意: 一般只有物件的屬性才可以刪除,而變數是不能刪除的,如:

var x = 1

; console.log(delete x);

這時列印台輸出false,因為變數是不可被刪除的。

檢測屬性是否存在

var person =;

console.log(

"age"in

person);

console.log(

"someother

"in person);

前者返回true,後者返回false。 即我們可以使用in來確定乙個物件是否含有該屬性。

屬性的新增

var person =;

person[

"school

"] = "

xjtu";

console.log(person);

屬性的新增非常簡單,如上所示,最終列印出來的物件是包含 school 屬性的。

下面是通過建構函式得到乙個雜湊表,在使用時只需例項化即可,且下面的功能較為豐富,在實際問題中,我們可以選擇性的使用 。

//

建立建構函式hashtable

function hashtable() ;

//新增關鍵字,無返回值

this.add =function (key, value)

//如果之前不存在,賦值; 如果之前存在,覆蓋。

res[key] =value;

};//刪除關鍵字, 如果雜湊表中包含key,並且delete返回true則刪除,並使得size減1

this.remove =function (key)

};//雜湊表中是否包含key,返回乙個布林值

this.containkey =function (key) ;

//雜湊表中是否包含value,返回乙個布林值

this.containvalue =function (value)

}return

false

; };

//根據鍵獲取value,如果不存在就返回null

this.getvalue =function (key) ;

//獲取雜湊表中的所有value, 返回乙個陣列

this.getallvalues =function ()

return

values;

};//根據值獲取雜湊表中的key,如果不存在就返回null

this.getkey =function (value)

}//遍歷結束沒有return,就返回null

return

null

; };

//獲取雜湊表中所有的key,返回乙個陣列

this.getallkeys =function ()

return

keys;

};//獲取雜湊表中記錄的條數,返回乙個數值

this.getsize =function () ;

//清空雜湊表,無返回值

this.clear =function () ;};}

問題:給定乙個整型的陣列(無序),找出其中的兩個數使得其和為某個指定的值,並返回這兩個數的下標(陣列下標從0開始),假設陣列元素的值各不相同。

實現如下:

"en

">

在實際的使用過程中,我們可以先寫出主要的功能,然後有需要再新增。

模擬實現雜湊桶,並封裝雜湊桶模擬實現map

雜湊桶結構 乙個陣列,每個元素都是乙個單鏈表結點 開雜湊 閉雜湊只用陣列 map 用仿函式和雜湊函式來封裝雜湊桶。仿函式是為了計算出元素的值 為什麼要仿函式計算 後序可以封裝set,所以無論是map還是set,存的值都是k v結構,set存了k k,也就是兩個一樣的值 雜湊函式用了模板特化,為了能夠...

資料結構 雜湊表及其模擬實現

直接定址法 hashfunc date a date b a,b為常數 從雜湊衝突的位置,找下乙個空餘位置插入元素。尋找方式有兩種,線性探測和二次探測。直接向後 1查詢。h i h0 i 2 或者h i h0 i 2 de需要的原因,此位置不可以插入元素,也不可設定為em 查詢時遇em就停止了,可能...

js 模擬實現EventBus

文章原文 eventbus 幾個常用方法如下 這裡用map 儲存 eventbus 的資料,map 的模擬實現 可以看 示例 如下 let eb new eventbus eb.on event1 test1 eb.emit event1 第一次 eb.off event1 test1 eb.emi...