• 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);

    }
  • 相关阅读:
    HDU 1358 Period (KMP)
    POJ 1042 Gone Fishing
    Csharp,Javascript 获取显示器的大小的几种方式
    css text 自动换行的实现方法 Internet Explorer,Firefox,Opera,Safar
    Dynamic Fonts动态设置字体大小存入Cookie
    CSS Image Rollovers翻转效果Image Sprites图片精灵
    CSS three column layout
    css 自定义字体 Internet Explorer,Firefox,Opera,Safari
    颜色选择器 Color Picker,Internet Explorer,Firefox,Opera,Safar
    CSS TextShadow in Safari, Opera, Firefox and more
  • 原文地址:https://www.cnblogs.com/fumj/p/2707237.html
Copyright © 2020-2023  润新知