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的blockui插件显示弹出层
Apr 14 Javascript
验证码按回车不变解决方法
Mar 29 Javascript
复制js对象方法(详解)
Jul 08 Javascript
判断一个变量是数组Array类型的方法
Sep 16 Javascript
LABjs、RequireJS、SeaJS的区别
Mar 04 Javascript
js字符串操作方法实例分析
May 06 Javascript
jQuery+AJAX实现遮罩层登录验证界面(附源码)
Sep 13 Javascript
javascript-解决mongoose数据查询的异步操作
Dec 22 Javascript
微信公众号菜单配置微信小程序实例详解
Mar 31 Javascript
webpack v4 从dev到prd的方法
Apr 02 Javascript
vue: WebStorm设置快速编译运行的方法
Oct 18 Javascript
原生js实现贪吃蛇游戏
Oct 26 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 5.0 Pear安装方法
2006/12/06 PHP
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
2011/10/31 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
2014/12/15 PHP
PHP PDOStatement::fetchColumn讲解
2019/01/31 PHP
THINKPHP5分页数据对象处理过程解析
2020/10/28 PHP
js跨域请求的5中解决方式
2015/07/02 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
微信js-sdk地理位置接口用法示例
2016/10/12 Javascript
JS实现简单的二元方程计算器功能示例
2017/01/03 Javascript
用director.js实现前端路由使用实例
2017/01/27 Javascript
JavaScript获取ul中li个数的方法
2017/02/13 Javascript
JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码
2017/08/18 Javascript
实现图片首尾平滑轮播(JS原生方法—节流)
2017/10/17 Javascript
layui-laydate时间日历控件使用方法详解
2018/11/15 Javascript
vue-for循环嵌套操作示例
2019/01/28 Javascript
js实现点击按钮随机生成背景颜色
2020/09/05 Javascript
[02:02]DOTA2英雄基础教程 斯拉达
2013/12/11 DOTA
python3简单实现微信爬虫
2015/04/09 Python
Python iter()函数用法实例分析
2018/03/17 Python
Python读取excel中的图片完美解决方法
2018/07/27 Python
TensorFlow实现Logistic回归
2018/09/07 Python
Python使用正则表达式分割字符串的实现方法
2019/07/16 Python
Python 异步协程函数原理及实例详解
2019/11/13 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
Python Tornado批量上传图片并显示功能
2020/03/26 Python
python抢购软件/插件/脚本附完整源码
2021/03/04 Python
css3使用animation属性实现炫酷效果(推荐)
2020/02/04 HTML / CSS
Adobe Html5 Extension开发初体验图文教程
2017/11/14 HTML / CSS
美国女孩服装购物网站:Justice
2017/03/04 全球购物
学术会议邀请函范文
2014/01/22 职场文书
电子专业自荐信
2014/07/01 职场文书
2014年手术室工作总结
2014/11/26 职场文书
2015秋季开学演讲稿范文
2015/07/16 职场文书
在Windows下安装配置CPU版的PyTorch的方法
2021/04/02 Python
SpringCloud Feign请求头删除修改的操作代码
2022/03/20 Java/Android
JavaScript模拟实现网易云轮播效果
2022/04/04 Javascript