创建和使用复合数组

一、使用Object对象创建复合数组

var person=new Object();
person.name="soul";
person.age="21";

二、使用Array对象创建复合数组

var person=new Array();
person["name"]="soul";
person["age"]=21;

三、遍历复合数组

  1、for...in  //返回键

  2、for each...in  //返回值

四、哈希表

  1、代码实现如下:

/**
 * 
 * @authors Soul (2461358597@qq.com)
 * @date    2016-05-23 10:23:49
 * @version 0.0.1
 */

/**
*
* @description  实现哈希表
* @param key  键
* @param value  值
*/

function hashTable(){
    this._hash={};
    this._count=0;

    /**
    *
    * @description  设置或更新键值
    * @return  boolean类型,true/false
    */
    this.put=function(key,value){

        //若键值不存在则键值数量+1
        if(!this._hash.hasOwnProperty(key)){
            this._count++;
        }
        //设置新的或覆盖旧的键值  不会有重复的键值存在
        this._hash[key]=value;    
        return true;    
    };
    /**
    *
    * @description  获取键指定的值
    * @return  value
    */
    this.get=function(key){
        if(this.containsKey(key))
            return this._hash[key];
    };
    /**
    *
    * @description  获取元素个数
    * @return  _count
    */
    this.size=function(){
        return this._count;
    };
    /**
    *
    * @description  检查是否为空
    * @return  boolean
    */
    this.isEmpty=function(){
        if(this._count==0){
            return true;
        }else{
            return false;
        }
    };
    /**
    *
    * @description  检查是否包含指定的键
    * @param key  键
    * @return  boolean
    */
    this.containsKey=function(key){
        return this._hash.hasOwnProperty(key);
    };
    /**
    *
    * @description  检查是否包含指定的值
    * @param value  值
    * @return  Boolean
    */
    this.containsValue=function(value){
        for(var _key in this._hash){
            if(this._hash[_key]==value){
                return true;
            }
            return false;
        }
    };
    /**
    *
    * @description  删除一组键值
    * @param key  键
    * @return  Boolean
    */
    this.remove=function(key){
        if(this.containsKey(key)){
            delete this._hash[key];
            this.count--;
            return true;
        }
        return false;
    };
    /**
    *
    * @description  清空所有键值
    * @return Boolean
    */
    this.clear=function(){
        this._hash={};
        this._count=0;
        return true;
    };
    /**
    *
    * @description  获取key集合,以数组的形式返回
    * @return Array
    */
    this.keySet=function(){
        var arrKeySet=new Array();
        var index=0;
        for(var _key in this._hash){
            arrKeySet[index++]=_key;
        }
        return (arrKeySet.length===0)?null:arrKeySet;
    };
    /**
    *
    * @description  获取value集合,以数组的形式返回
    * @return  Array
    *
    */
    this.valueSet=function(){
        var arrValueSet=new Array();
        var index=0;
        for(var _key in this._hash){
            arrValueSet[index++]=this._hash[_key];
        }
        return (arrValueSet.length==0)?null:arrValueSet;
    }
}

  2、测试如下:

  

posted @ 2016-05-23 12:03  DeadGhost  阅读(263)  评论(0编辑  收藏  举报