本篇文章為大家展示了使用JavaScript怎么實(shí)現(xiàn)哈希表,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
創(chuàng)新互聯(lián)建站專注于霍山企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城系統(tǒng)網(wǎng)站開發(fā)?;羯骄W(wǎng)站建設(shè)公司,為霍山等地區(qū)提供建站服務(wù)。全流程按需開發(fā),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
屬性的枚舉:
var person = { name: "zzw", sex: "Male", age: 21 }; for (var prop in person) { console.log(prop + " ",person[prop]); }
輸出:
即對于對象而言,我們可以使用for in來枚舉對象的屬性。
屬性的刪除:
var person = { name: "zzw", sex: "Male", age: 21 }; var ifRemove = delete person.name; for (var prop in person) { console.log(prop + " ",person[prop]); } console.log(ifRemove);
對象的屬性可以通過 delete 來刪除,并且會有一個(gè)返回值。 如下:
注意: 一般只有對象的屬性才可以刪除,而變量是不能刪除的,如:
var x = 1; console.log(delete x);
這時(shí)打印臺輸出false,因?yàn)樽兞渴遣豢杀粍h除的。
檢測屬性是否存在:
var person = { name: "zzw", sex: "Male", age: 21 }; console.log("age" in person); console.log("someOther" in person);
前者返回true,后者返回false。 即我們可以使用in來確定一個(gè)對象是否含有該屬性。
屬性的添加:
var person = { name: "zzw", sex: "Male", age: 21 }; person["school"] = "XJTU"; console.log(person);
屬性的添加非常簡單,如上所示,最終打印出來的對象是包含 school 屬性的。
第二部分: 使用js實(shí)現(xiàn)哈希表
下面是通過構(gòu)造函數(shù)得到一個(gè)哈希表,在使用時(shí)只需實(shí)例化即可,且下面的功能較為豐富,在實(shí)際問題中,我們可以選擇性的使用 。
// 創(chuàng)建構(gòu)造函數(shù)HashTable function HashTable() { // 初始化哈希表的記錄條數(shù)size var size = 0; // 創(chuàng)建對象用于接受鍵值對 var res = {}; // 添加關(guān)鍵字,無返回值 this.add = function (key, value) { //判斷哈希表中是否存在key,若不存在,則size加1,且賦值 if (!this.containKey(key)) { size++; } // 如果之前不存在,賦值; 如果之前存在,覆蓋。 res[key] = value; }; // 刪除關(guān)鍵字, 如果哈希表中包含key,并且delete返回true則刪除,并使得size減1 this.remove = function (key) { if (this.containKey(key) && (delete res[key])) { size--; } }; // 哈希表中是否包含key,返回一個(gè)布爾值 this.containKey = function (key) { return (key in res); }; // 哈希表中是否包含value,返回一個(gè)布爾值 this.containValue = function (value) { // 遍歷對象中的屬性值,判斷是否和給定value相等 for (var prop in res) { if (res[prop] === value) { return true; } } return false; }; // 根據(jù)鍵獲取value,如果不存在就返回null this.getValue = function (key) { return this.containKey(key) ? res[key] : null; }; // 獲取哈希表中的所有value, 返回一個(gè)數(shù)組 this.getAllValues = function () { var values = []; for (var prop in res) { values.push(res[prop]); } return values; }; // 根據(jù)值獲取哈希表中的key,如果不存在就返回null this.getKey = function (value) { for (var prop in res) { if (res[prop] === value) { return prop; } } // 遍歷結(jié)束沒有return,就返回null return null; }; // 獲取哈希表中所有的key,返回一個(gè)數(shù)組 this.getAllKeys = function () { var keys = []; for (var prop in res) { keys.push(prop); } return keys; }; // 獲取哈希表中記錄的條數(shù),返回一個(gè)數(shù)值 this.getSize = function () { return size; }; // 清空哈希表,無返回值 this.clear = function () { size = 0; res = {}; }; }
第三部分: 應(yīng)用實(shí)例
問題:給定一個(gè)整型的數(shù)組(無序),找出其中的兩個(gè)數(shù)使得其和為某個(gè)指定的值,并返回這兩個(gè)數(shù)的下標(biāo)(數(shù)組下標(biāo)從0開始),假設(shè)數(shù)組元素的值各不相同。
實(shí)現(xiàn)如下:
哈希表的使用
上述內(nèi)容就是使用JavaScript怎么實(shí)現(xiàn)哈希表,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。