您好,登錄后才能下訂單哦!
本篇文章為大家展示了使用JavaScript怎么實現哈希表,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
屬性的枚舉:
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 來刪除,并且會有一個返回值。 如下:
注意: 一般只有對象的屬性才可以刪除,而變量是不能刪除的,如:
var x = 1; console.log(delete x);
這時打印臺輸出false,因為變量是不可被刪除的。
檢測屬性是否存在:
var person = { name: "zzw", sex: "Male", age: 21 }; console.log("age" in person); console.log("someOther" in person);
前者返回true,后者返回false。 即我們可以使用in來確定一個對象是否含有該屬性。
屬性的添加:
var person = { name: "zzw", sex: "Male", age: 21 }; person["school"] = "XJTU"; console.log(person);
屬性的添加非常簡單,如上所示,最終打印出來的對象是包含 school 屬性的。
第二部分: 使用js實現哈希表
下面是通過構造函數得到一個哈希表,在使用時只需實例化即可,且下面的功能較為豐富,在實際問題中,我們可以選擇性的使用 。
// 創建構造函數HashTable function HashTable() { // 初始化哈希表的記錄條數size var size = 0; // 創建對象用于接受鍵值對 var res = {}; // 添加關鍵字,無返回值 this.add = function (key, value) { //判斷哈希表中是否存在key,若不存在,則size加1,且賦值 if (!this.containKey(key)) { size++; } // 如果之前不存在,賦值; 如果之前存在,覆蓋。 res[key] = value; }; // 刪除關鍵字, 如果哈希表中包含key,并且delete返回true則刪除,并使得size減1 this.remove = function (key) { if (this.containKey(key) && (delete res[key])) { size--; } }; // 哈希表中是否包含key,返回一個布爾值 this.containKey = function (key) { return (key in res); }; // 哈希表中是否包含value,返回一個布爾值 this.containValue = function (value) { // 遍歷對象中的屬性值,判斷是否和給定value相等 for (var prop in res) { if (res[prop] === value) { return true; } } return false; }; // 根據鍵獲取value,如果不存在就返回null this.getValue = function (key) { return this.containKey(key) ? res[key] : null; }; // 獲取哈希表中的所有value, 返回一個數組 this.getAllValues = function () { var values = []; for (var prop in res) { values.push(res[prop]); } return values; }; // 根據值獲取哈希表中的key,如果不存在就返回null this.getKey = function (value) { for (var prop in res) { if (res[prop] === value) { return prop; } } // 遍歷結束沒有return,就返回null return null; }; // 獲取哈希表中所有的key,返回一個數組 this.getAllKeys = function () { var keys = []; for (var prop in res) { keys.push(prop); } return keys; }; // 獲取哈希表中記錄的條數,返回一個數值 this.getSize = function () { return size; }; // 清空哈希表,無返回值 this.clear = function () { size = 0; res = {}; }; }
第三部分: 應用實例
問題:給定一個整型的數組(無序),找出其中的兩個數使得其和為某個指定的值,并返回這兩個數的下標(數組下標從0開始),假設數組元素的值各不相同。
實現如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>哈希表的使用</title> </head> <body> <script> function queryIndex(arr, result) { var hashTable = new HashTable(); var arrLength = arr.length; var sub = []; for (var i = 0; i < arrLength; i++) { // 掃描一遍,存儲下標和值 hashTable.add(i, arr[i]); } for (var j = 0; j < arrLength; j++) { if (hashTable.containValue(result - arr[j]) && result !== 2*arr[j]) { // 獲取兩個下標,跳出循環 sub.push(j); var antherIndex = Number(hashTable.getKey(result - arr[j])); sub.push(antherIndex); break; } } if (sub.length !== 0) { return sub; } else { return -1; } } console.log(queryIndex([1,5,7,3,8], 15)); // 2, 4 console.log(queryIndex([8,18,28,12,29,17], 46)); // 2, 4 console.log(queryIndex([8,18,28,12,29,17], 2)); // -1 // 創建構造函數HashTable function HashTable() { // 初始化哈希表的記錄條數size var size = 0; // 創建對象用于接受鍵值對 var res = {}; // 添加關鍵字,無返回值 this.add = function (key, value) { //判斷哈希表中是否存在key,若不存在,則size加1,且賦值 if (!this.containKey(key)) { size++; } // 如果之前不存在,賦值; 如果之前存在,覆蓋。 res[key] = value; }; // 刪除關鍵字, 如果哈希表中包含key,并且delete返回true則刪除,并使得size減1 this.remove = function (key) { if (this.containKey(key) && (delete res[key])) { size--; } }; // 哈希表中是否包含key,返回一個布爾值 this.containKey = function (key) { return (key in res); }; // 哈希表中是否包含value,返回一個布爾值 this.containValue = function (value) { // 遍歷對象中的屬性值,判斷是否和給定value相等 for (var prop in res) { if (res[prop] === value) { return true; } } return false; }; // 根據鍵獲取value,如果不存在就返回null this.getValue = function (key) { return this.containKey(key) ? res[key] : null; }; // 獲取哈希表中的所有value, 返回一個數組 this.getAllValues = function () { var values = []; for (var prop in res) { values.push(res[prop]); } return values; }; // 根據值獲取哈希表中的key,如果不存在就返回null this.getKey = function (value) { for (var prop in res) { if (res[prop] === value) { return prop; } } // 遍歷結束沒有return,就返回null return null; }; // 獲取哈希表中所有的key,返回一個數組 this.getAllKeys = function () { var keys = []; for (var prop in res) { keys.push(prop); } return keys; }; // 獲取哈希表中記錄的條數,返回一個數值 this.getSize = function () { return size; }; // 清空哈希表,無返回值 this.clear = function () { size = 0; res = {}; }; } </script> </body> </html>
上述內容就是使用JavaScript怎么實現哈希表,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。