zoukankan      html  css  js  c++  java
  • js模拟hashtable

    function Hashtable()//自定义hashtable
    {
        this._hash = new Object();
        this.add = function(key, value) {
            if (typeof (key) != "undefined") {
                if (this.contains(key) == false) {
                    this._hash[key] = typeof (value) == "undefined" ? null : value;
                    return true;
                } else {
                    return false;
                }
            } else {
                return false;
            }
        }
        this.remove = function(key) { delete this._hash[key]; }
        this.count = function() { var i = 0; for (var k in this._hash) { i++; } return i; }
        this.items = function(key) { return this._hash[key]; }
        this.contains = function(key) { return typeof (this._hash[key]) != "undefined"; }
        this.clear = function() { for (var k in this._hash) { delete this._hash[k]; } }
    }
    // js哈希表
    function HashTable() {

        
    this.ObjArr = {};

        
    this.Count = 0;

        
    //添加
        this.Add = function(key, value) {
            
    if (this.ObjArr.hasOwnProperty(key)) {
                
    return false//如果键已经存在,不添加
            }
            
    else {
                
    this.ObjArr[key] = value;
                
    this.Count++;
                
    return true;
            }
        }

        
    //是否包含某项
        this.Contains = function(key) {
            
    return this.ObjArr.hasOwnProperty(key);
        }

        
    //取某一项 其实等价于this.ObjArr[key]
        this.GetValue = function(key) {
            
    if (this.Contains(key)) {
                
    return this.ObjArr[key];
            }
            
    else {
                
    throw Error("Hashtable not cotains the key: " + String(key)); //脚本错误
                
    //return;
            }
        }

        
    //移除
        this.Remove = function(key) {
            
    if (this.Contains(key)) {
                delete 
    this.ObjArr[key];
                
    this.Count--;
            }
        }

        
    //清空
        this.Clear = function() {
            
    this.ObjArr = {}; this.Count = 0;
        }
    }
     
    测试代码:
    //员工
    function employee(id, userName) {
        
    this.id = id;
        
    this.userName = userName;
    }

    function test() {

        
    var ht = new HashTable();
        
    var tmpEmployee = null;
        
    for (var i = 1; i < 6; i++) {
            tmpEmployee 
    = new employee(i, "Employee_" + i);
            ht.Add(i, tmpEmployee);
        }
        
    for (var i = 1; i <= ht.Count; i++) {
            alert(ht.GetValue(i).userName); 
    //其实等价于ht.ObjArr[i].userName
            //alert(ht.ObjArr[i].userName);
        }
        ht.Remove(
    1);
        alert(ht.Contains(
    1)); //false
        alert(ht.Contains(2)); //true
        //alert(ht.GetValue(1)); //异常
        var result = ht.GetValue(2);
        
    if (result != null) {
            alert(
    "Employee Id:" + result.id + ";UserName:" + result.userName);
        }
        ht.Add(
    2"这一个key已经存在!"); //Add无效
        //ht.Clear(); //清空
        alert(ht.Count);

    }
  • 相关阅读:
    一.js高级(4)-函数调用-this指向-其他参数
    一.js高级(3)-原型及其继承
    一.js高级(2) -构造函数-原型对象
    curl ,post,get (原创)
    PDOHelper (原创)
    php 写日志函数(原创)
    一致性hash 算法 (转)
    md5 c# unicode 互换(原创)
    php auto_load mvc 接口框架(原创)
    php获取uniqid
  • 原文地址:https://www.cnblogs.com/fumj/p/2707237.html
Copyright © 2011-2022 走看看