js模拟hashtable的简单实例

 更新时间:2014年03月06日 08:59:01   作者:  
本篇文章主要是对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);

}

相关文章

  • JavaScript+Canvas实现带跳动效果的粒子动画

    JavaScript+Canvas实现带跳动效果的粒子动画

    这篇文章主要为大家详细介绍了如何通过JavaScript和Canvas实现带跳动效果的粒子动画,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下
    2023-03-03
  • 基于Bootstrap表单验证功能

    基于Bootstrap表单验证功能

    这篇文章主要为大家详细介绍了基于Bootstrap表单验证功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • JS获得一个对象的所有属性和方法实例

    JS获得一个对象的所有属性和方法实例

    下面小编就为大家带来一篇JS获得一个对象的所有属性和方法实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • js点击列表文字对应该行显示背景颜色的实现代码

    js点击列表文字对应该行显示背景颜色的实现代码

    这篇文章主要介绍了js点击列表文字对应该行显示背景颜色的实现代码,感兴趣的小伙伴可以参考下
    2015-08-08
  • JavaScript下的时间格式处理函数Date.prototype.format

    JavaScript下的时间格式处理函数Date.prototype.format

    这篇文章主要介绍了JavaScript下的时间格式处理函数Date.prototype.format的相关资料,需要的朋友可以参考下
    2016-01-01
  • javascript实现表格增删改操作实例详解

    javascript实现表格增删改操作实例详解

    这篇文章主要介绍了javascript实现表格增删改操作的实现方法,以实例形式较为详细的分析了javascript操作表格的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-05-05
  • ajax分页效果(bootstrap模态框)

    ajax分页效果(bootstrap模态框)

    这篇文章主要为大家详细介绍了ajax分页效果的实现方法,结合bootstrap模态框使用 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • js动态添加事件并可传参数示例代码

    js动态添加事件并可传参数示例代码

    js动态添加事件可以搜索到很多的相关文章,不过可以传参数的就没有几个了,下面有个不错的示例可以满足大家对传参的需求,感兴趣的各位不要错过
    2013-10-10
  • 在uniapp中如何去掉一些不想要的权限

    在uniapp中如何去掉一些不想要的权限

    在uniapp中,云打包以后会自动增加一个电话权限,并且在manifest.json里面也没有添加这个权限,怎么添加都添加不上,下面小编给大家分享在uniapp中如何去掉一些不想要的权限,感兴趣的朋友跟随小编一起看看吧
    2024-03-03
  • Bootstrap零基础入门教程(三)

    Bootstrap零基础入门教程(三)

    Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架。本文重点给大家介绍Bootstrap零基础入门教程(三) ,非常不错,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-07-07

最新评论