// JavaScript Document
function HashTable(){
    this._hash={};
    this._count=0;
    
    
    /**
    *添加或者更新key
    */
    this.put=function(key,value){
        if(this._hash.hasOwnProperty(key)){
            this._hash[key]=value;
            return true;
        }else{
                this._hash[key]=value;
                this._count++;
                return true;
            }
    }
    
    
    /**
    *获取key指定的值
    */
    this.get=function(key){
        if(this.containsKey(key))
            return this._hash[key];
    }    
    
    
    /**
    *获取元素个数
    */    
    this.size=function(){
        return this._count;
    }
    
    
    /**
    *检查是否为空
    */
    this.isEmpty=function(){
        if(this._count<=0)
            return true;
        else return false;
    }
    
    
    /**
    *检查是否包含指定的key
    */
    this.containsKey=function(){
            return this._hash.hasOwnPropetry(key);
    }
    
    
    /**
    *检查是否包含指定的value
    */
    this.containsValue=function(){
        for(var strKey in this._hash)
            if(this._hash[strKey]==value)
                return true;                
        return false;
    }
    
    
    /**
    *删除一个key
    */
    this.remove=function(key){
            delete this._hash[key];
            this._count--;
    }
    
    
    /**
    *删除所有的key
    */
    this.clear=function(){
        this._hash={};
        this._count=0;
    }
    
    
    /**
    *从HashTable中获取Key的集合,以数组的形式返回
    */
    this.keySet=function(){
        var arrKeySet= new Array();
        var index=0;
        for(var strKey in this._hash){
            arrKeySet[index++]=strKey;
        }
        return (arrKeySet.length==0)?null:arrKeySet;
    }
    
    
    /**
    *从HashTable中获取Key的集合,以数组的形式返回
    */
    this.values=function(){
        var arrValues= new Array();
        var index=0;
        for(var strKey in this._hash){
            arrValues[index++]=this._hash[strKey];
        }
        return (arrValues.length==0)?null:arrValues;
    }
}

js 定义hash类的更多相关文章

  1. js定义类和方法

    js中定义一个类 //定义一个user类 var user = function(){ //类中的属性 var age; //设置age的值 var setAge = function(age){ t ...

  2. JS定义类的六种方式详解

    转载自: http://www.jb51.net/article/84089.htm 在前端开发中,经常需要定义JS类.那么在JavaScript中,定义类的方式有几种,分别是什么呢?本文就JS定义类 ...

  3. js定义类的方法

    ECMAScript6已经支持了class,但之前版本都不支持类,但是可以通过一些方法来模拟类. js中的类,既是重点,也是难点,很多时候都感觉模棱两可. 首先强调一下js中很重要的3个知识点:thi ...

  4. 通过寄生组合式继承创建js的异常类

    最近项目中在做js的统一的异常处理,需要自定义异常类.理想的设计方案为:自定义一个异常错误类BaseError,继承自Error,然后再自定义若干个系统异常,例如用户取消异常.表单异常.网络异常,这些 ...

  5. NodeJs中类定义及类使用

    1.首先定义类Point,文件名为point.class.js: // 定义类 class Point { //构造函数 constructor(x, y) { this.x = x;//类中变量 t ...

  6. js中的类

    概述 经典的老书害人啊,全是讨论怎么解决javascript里面用函数形式定义类的坑.结果es2015直接用class关键字解决了所有问题.虽然class关键字没有什么新东西,只是js现有继承结构的语 ...

  7. 【JS】#001 JS定义对象写法(原型、JSON方式)

    下面主要写两种 JS 定义对象的 常用写法 写法1:[很像面向对象语言中的写法] function zhongxia(age) { this.age = age; } zhongxia.name = ...

  8. js中有关类、对象的增强函数

    javascript中继承的实现 基础实现 function Range(from,to){ this.from =from; this.to =to; } Range.prototype = { i ...

  9. js常用工具类.

    一些js的工具类 复制代码 /** * Created by sevennight on 15-1-31. * js常用工具类 */ /** * 方法作用:[格式化时间] * 使用方法 * 示例: * ...

随机推荐

  1. LeetCode 206. Reverse Linked List(迭代和递归两种实现)

    递归的代码比迭代的代码看起来更清爽一些,也是由于递归对行为进行了抽象吧. 注意到,这是一个尾递归函数.一些编译器会将它优化为迭代,这样一方面,在代码层面保持了清晰的逻辑和可读性.一方面保持了代码的性能 ...

  2. k8s调度-指定node

    1.给node加标签 kubectl label nodes k8s-slave2 slave= 2.查看标签 [root@k8s_master centos7]# kubectl describe ...

  3. 【Mac系统 + Git】之上传项目代码到github上以及删除某个文件夹

    之前做开发的时候,用过一段时间git代码管理工具,用命令行操作感觉十分高大上,今天我想从头总结一篇Mac系统下如何利用git上传代码到github上的学习. 目录 一.安装Git 二.创建.ssh文件 ...

  4. 恢复不小心误覆盖的代码文件 (sublime编辑器)

    最新写了一个python脚本,另外在终端上运行一个shell脚本循环记录一些性能.耗时参数.取出记录的数据,使用python pyplot强大的绘图功能来可视化,易用程度仅次于matlab. 本次文件 ...

  5. 深入解读DevOps 开发-运维

    历史回顾 为了能够更好的理解什么是DevOps,我们很有必要对当时还只有程序员(此前还没有派生出开发者,前台工程师,后台工程师之类)这个称号存在的历史进行一下回顾. 如编程之道中所言: 老一辈的程序员 ...

  6. [转]Html position(static、relative、absolute、fixed)

    转自:http://blog.csdn.net/topviewers/article/details/21644305 讲解不错,转载备忘. position的四个属性值: 1.relative2.a ...

  7. vue项目在APP禁止页面缩放

    veu-cli自动生成的项目中,index.html中meta 标签内容如下,放在手机上浏览 是可以放大缩小的<meta name="viewport" content=&q ...

  8. 监听并保存ssh账号密码

    有时候渗透搞下一台服务器的权限,想通过此服务器抓取其他服务器的ssh密码.就可以用以下方法,如果管理员通过这台服务器作为跳板登录其他服务器,密码就会记录下来. alias ssh='strace -o ...

  9. 感知器(Perception)

    感知器是一种早期的神经网络模型,由美国学者F.Rosenblatt于1957年提出.感知器中第一次引入了学习的概念,使人脑所具备的学习功能在基于符号处理的数学到了一定程度模拟,所以引起了广泛的关注. ...

  10. 批处理设置IP地址

    echo offecho 修改[本地连接]IP......netsh interface IP set address "本地连接" static 138.8.8.111 255. ...