javascript 實現HashTable(哈希表)

1、javascript哈希表簡介

javascript裏面是沒有哈希表的,一直在java,C#中有時候用到了這一種數據結構,javascript裏面若沒有,感受很是不順手。細細看來,其實javascript的object的屬性其實與哈希表很是相似。javascript

如:java

var person = {};
person["name"] = "關羽";

咱們只須要在其基礎上再封裝一些HashTable的函數,就可以獲得一個精簡版的哈希表。數組

加入函數以下:數據結構

函數名 說明 返回值
add(key,value) 添加項
getValue(key) 根據key取值 object
remove(key) 根據key刪除一項
containsKey(key) 是否包含某個key bool
containsValue(value) 是否包含某個值 bool
getValues() 獲取全部的值的數組 array
getKeys() 獲取全部的key的數組 array
getSize() 獲取項總數 int
clear() 清空哈希表

2、代碼實現

其具體的實現能夠查看代碼,都不算很複雜的東西。函數

function HashTable() {
    var size = 0;
    var entry = new Object();
    this.add = function (key, value) {
        if (!this.containsKey(key)) {
            size++;
        }
        entry[key] = value;
    }
    this.getValue = function (key) {
        return this.containsKey(key) ? entry[key] : null;
    }
    this.remove = function (key) {
        if (this.containsKey(key) && (delete entry[key])) {
            size--;
        }
    }
    this.containsKey = function (key) {
        return (key in entry);
    }
    this.containsValue = function (value) {
        for (var prop in entry) {
            if (entry[prop] == value) {
                return true;
            }
        }
        return false;
    }
    this.getValues = function () {
        var values = new Array();
        for (var prop in entry) {
            values.push(entry[prop]);
        }
        return values;
    }
    this.getKeys = function () {
        var keys = new Array();
        for (var prop in entry) {
            keys.push(prop);
        }
        return keys;
    }
    this.getSize = function () {
        return size;
    }
    this.clear = function () {
        size = 0;
        entry = new Object();
    }
}

簡單使用示例:this

var manHT = new HashTable();
manHT.add("p1","劉備");
manHT.add("p2","關羽");
$("#div1").text(manHT.getValue("p1"));
相關文章
相關標籤/搜索