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 相关文章推荐
javaScript复制功能调用实现方案
Dec 13 Javascript
jquery子元素过滤选择器使用示例
Jun 24 Javascript
js生成验证码并直接在前端判断
May 15 Javascript
jquery实现浮动的侧栏实例
Jun 25 Javascript
BootStrap中
Dec 10 Javascript
ECMAScript6 新特性范例大全
Mar 24 Javascript
vue.js移动端tab组件的封装实践实例
Jun 30 Javascript
Require.js的基本用法详解
Jul 03 Javascript
无限循环轮播图之运动框架(原生JS实现)
Oct 01 Javascript
使用express+multer实现node中的图片上传功能
Feb 02 Javascript
Vue拖拽组件开发实例详解
May 11 Javascript
一次让你了解全部JavaScript的作用域
Jun 24 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
深入PHP nl2br()格式化输出的详解
2013/06/05 PHP
神盾加密解密教程(二)PHP 神盾解密
2014/06/08 PHP
php getcwd与dirname(__FILE__)区别详解
2016/09/24 PHP
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
2011/04/27 Javascript
asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)
2012/03/14 Javascript
如何使用Jquery获取Form表单中被选中的radio值
2013/08/09 Javascript
js用闭包遍历树状数组的方法
2014/03/19 Javascript
JavaScript二维数组实现的省市联动菜单
2014/05/08 Javascript
Js获取图片原始宽高的实现代码
2016/05/17 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
微信小程序 视图容器组件的详解及实例代码
2017/01/19 Javascript
JavaScript中transform实现数字翻页效果
2017/03/08 Javascript
jQuery选择器之属性过滤选择器详解
2017/09/28 jQuery
electron demo项目npm install安装失败的解决方法
2018/02/06 Javascript
Vue自定义过滤器格式化数字三位加一逗号实现代码
2018/03/23 Javascript
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
创建Vue项目以及引入Iview的方法示例
2018/12/03 Javascript
inquirer.js一个用户与命令行交互的工具详解
2019/05/18 Javascript
对Layer UI 模块化的用法详解
2019/09/26 Javascript
浅谈vue中组件绑定事件时是否加.native
2019/11/09 Javascript
vue cli 3.0通用打包配置代码,不分一二级目录
2020/09/02 Javascript
python实现DEM数据的阴影生成的方法
2019/07/23 Python
Django stark组件使用及原理详解
2019/08/22 Python
python协程gevent案例 爬取斗鱼图片过程解析
2019/08/27 Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
2020/05/27 Python
phpquery中文手册
2021/03/18 PHP
小米俄罗斯授权商店:Xiaomi俄罗斯
2019/12/08 全球购物
大学生就业推荐信范文
2013/11/29 职场文书
《画风》教学反思
2014/04/16 职场文书
领导班子个人查摆问题对照检查材料
2014/10/02 职场文书
正风肃纪剖析材料范文
2014/10/10 职场文书
2015年保洁员工作总结
2015/05/04 职场文书
拿破仑传读书笔记
2015/07/01 职场文书
《秋天的怀念》教学反思
2016/02/17 职场文书
5种方法告诉你如何使JavaScript 代码库更干净
2021/09/15 Javascript
golang定时器
2022/04/14 Golang