一、使用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、测试如下: