js模拟hashtable的简单实例


Posted in Javascript onMarch 06, 2014
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 相关文章推荐
jQuery中ajax的load()方法用法实例
Dec 26 Javascript
使用jQuery管理选择结果
Jan 20 Javascript
使用struts2+Ajax+jquery验证用户名是否已被注册
Mar 22 Javascript
JavaScript制作弹出层效果
Dec 02 Javascript
javascript遍历json对象的key和任意js对象属性实例
Mar 09 Javascript
js实现一个猜数字游戏
Mar 31 Javascript
AngularJS实现表格的增删改查(仅限前端)
Jul 04 Javascript
BootStrap 页签切换失效的解决方法
Aug 17 Javascript
基于$.ajax()方法从服务器获取json数据的几种方式总结
Jan 31 Javascript
微信小程序实现文字从右向左无限滚动
Nov 18 Javascript
微信小程序new Date()方法失效问题解决方法
Jul 29 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
Aug 22 Javascript
JavaScript简单实现鼠标拖动选择功能
Mar 06 #Javascript
用JS在浏览器中创建下载文件
Mar 05 #Javascript
使用iframe window的scroll方法控制iframe页面滚动
Mar 05 #Javascript
js写的方法实现上传图片之后查看大图
Mar 05 #Javascript
js数值和和字符串进行转换时可以对不同进制进行操作
Mar 05 #Javascript
JSON中双引号的轮回使用过程中一定要小心
Mar 05 #Javascript
关于jQuery中的each方法(jQuery到底干了什么)
Mar 05 #Javascript
You might like
解决phpmyadmin 乱码,支持gb2312和utf-8
2006/11/20 PHP
PHP COOKIE设置为浏览器进程
2009/06/21 PHP
5种PHP创建数组的实例代码分享
2014/01/17 PHP
JavaScript起点(严格模式深度了解)
2013/01/28 Javascript
js报$ is not a function 的问题的解决方法
2014/01/20 Javascript
jquery淡化版banner异步图片文字效果切换图片特效
2014/04/08 Javascript
JavaScript中的函数重载深入理解
2014/08/04 Javascript
自编jQuery插件实现模拟alert和confirm
2014/09/01 Javascript
用console.table()调试javascript
2014/09/04 Javascript
JavaScript脚本判断蜘蛛来源的方法
2015/09/22 Javascript
AngularJS实现ajax请求的方法
2016/11/22 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
2017/02/10 Javascript
使用yeoman构建angular应用的方法
2017/08/14 Javascript
React操作真实DOM实现动态吸底部的示例
2017/10/23 Javascript
解决element ui select下拉框不回显数据问题的解决
2019/02/20 Javascript
优雅地使用loading(推荐)
2019/04/20 Javascript
VUE动态生成word的实现
2020/07/26 Javascript
Python单元测试框架unittest使用方法讲解
2015/04/13 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
2019/04/05 Python
Python Django框架单元测试之文件上传测试示例
2019/05/17 Python
opencv-python 读取图像并转换颜色空间实例
2019/12/09 Python
pycharm设置当前工作目录的操作(working directory)
2020/02/14 Python
PyCharm中如何直接使用Anaconda已安装的库
2020/05/28 Python
浅析Python模块之间的相互引用问题
2021/02/26 Python
python定义具名元组实例操作
2021/02/28 Python
女士时装鞋:Chinese Laundry
2018/08/29 全球购物
Dodax奥地利:音乐、电影、书籍、玩具、电子产品等
2019/08/31 全球购物
荣耀俄罗斯官网:HONOR俄罗斯
2020/10/31 全球购物
留学自荐信
2013/10/10 职场文书
大学生专科学习生活的自我评价
2013/12/07 职场文书
大学生学业生涯规划
2014/01/05 职场文书
农村婚礼主持词
2014/03/13 职场文书
法学专业毕业实习自我鉴定2014
2014/09/27 职场文书
青年教师个人总结
2015/02/11 职场文书
小学教研工作总结2015
2015/05/13 职场文书
MySQL修改默认引擎和字符集详情
2021/09/25 MySQL