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 multiSelect 多选下拉框
Jul 09 Javascript
jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
Jun 04 Javascript
js获取网页可见区域、正文以及屏幕分辨率的高度
May 15 Javascript
javascript Deferred和递归次数限制实例
Oct 21 Javascript
js鼠标点击图片切换效果代码分享
Aug 26 Javascript
jQuery+JSON实现AJAX二级联动实例分析
Dec 18 Javascript
Vue.js 中的 $watch使用方法
May 25 Javascript
基于vue配置axios的方法步骤
Nov 09 Javascript
关于HTML5的data-*自定义属性的总结
May 05 Javascript
Vue动态加载异步组件的方法
Nov 21 Javascript
jQuery实现高级检索功能
May 28 jQuery
快速解决element的autofocus失效问题
Sep 08 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
thinkphp的dump函数无输出实例代码
2016/11/15 PHP
xml分页+ajax请求数据源+dom取结果实例代码
2008/10/31 Javascript
javascript中的array数组使用技巧
2010/01/31 Javascript
奉献给JavaScript初学者的编写开发的七个细节
2011/01/11 Javascript
IE和Firefox的Javascript兼容性总结[推荐收藏]
2011/10/19 Javascript
JavaScript实现GriwView单列全选(自写代码)
2013/05/13 Javascript
JS保留两位小数 四舍五入函数的小例子
2013/11/20 Javascript
js贪吃蛇游戏实现思路和源码
2016/04/14 Javascript
AngularJS指令与控制器之间的交互功能示例
2016/12/14 Javascript
node.js中express中间件body-parser的介绍与用法详解
2017/05/23 Javascript
原生js实现简单的链式操作
2017/07/04 Javascript
vue使用Element组件时v-for循环里的表单项验证方法
2018/06/28 Javascript
利用JS动态生成隔行换色HTML表格的两种方法
2018/10/09 Javascript
vue2.0 如何在hash模式下实现微信分享
2019/01/22 Javascript
this.$toast() 了解一下?
2019/04/18 Javascript
JS实现可视化音频效果的实例代码
2020/01/16 Javascript
[59:26]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第二局
2016/02/28 DOTA
python关闭windows进程的方法
2015/04/18 Python
python写入xml文件的方法
2015/05/08 Python
Python正则表达式教程之一:基础篇
2017/03/02 Python
Python利用matplotlib生成图片背景及图例透明的效果
2017/04/27 Python
django中的HTML控件及参数传递方法
2018/03/20 Python
利用python打开摄像头及颜色检测方法
2018/08/03 Python
python 爬取古诗文存入mysql数据库的方法
2020/01/08 Python
jupyter notebook中新建cell的方法与快捷键操作
2020/04/22 Python
CSS3 实现的加载动画
2020/12/07 HTML / CSS
HTML5 SEO优化的一些建议
2020/08/27 HTML / CSS
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
2021/01/20 HTML / CSS
Flesh Beauty官网:露华浓集团旗下彩妆品牌
2021/02/15 全球购物
自我鉴定思想方面
2013/10/07 职场文书
酒店出纳岗位职责
2013/12/29 职场文书
教师考核评语大全
2014/12/31 职场文书
小马王观后感
2015/06/11 职场文书
看看如何用Python绘制小米新版天价logo
2021/04/20 Python
pytorch 6 batch_train 批训练操作
2021/05/28 Python
Java设计模式之享元模式示例详解
2022/03/03 Java/Android