如何使用js实现哈希表

1352
/**
 * js 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()				|清空哈希表			|无
 */
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();
    }
}