字典(Dictionary)是一種以 鍵-值對 形式存儲數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。
javascript用數(shù)組(Array)創(chuàng)建字典類。常用的有添加浩姥,查詢,刪除等操作状您。
function Dictionary() {
this.dict= new Array();
this.add = add;
this.find = find;
this.remove = remove;
this.count = count;
this.clear = clear;
}
function add(key, value) {
this.dict[key] = value;
}
我們項(xiàng)目中大佬對字典類進(jìn)行更詳細(xì)的封裝勒叠,截取部分代碼,具體如下
private _keys=[];
/**
* 存儲字典信息
*/
private _items=new Object();
/**
* 將一個(gè)鍵值添加到數(shù)組的結(jié)尾膏孟。
* @param key 鍵名
* @param value 值
* @return Object
*
*/
public push(key:string|number,value:any):any {
var result:Object=null;
if (this.containsKey(key))
{
result=this._items[key];
this._items[key]=value;
}
else
{
this._items[key]=value;
this._keys.push(key);
result=this._items[key];
}
return result;
}
/**
* 將一個(gè)鍵值添加到數(shù)組的開始
* @param key 鍵名
* @param value 值
* @return Object
*
*/
public unshift(key:string|number,value:any):any {
var result:Object=null;
if (this.containsKey(key)){
result=this._items[key];
this._items[key]=value;
}
else {
this._items[key]=value;
this._keys.unshift(key);
result=this._items[key];
}
return result;
}
/**
* 插入數(shù)據(jù)到特定位置
* @param index 插入位置
* @param key 鍵名
* @param value 值
* @return 添加Object 如果失敗返回NULL
*
*/
public splice(index:number,key:string,value:any):any{
var result:any=null;
if (this.containsKey(key)){
this.remove(key);
}
if(index<0){
return result;
}
this._items[key]=value;
this._keys.splice(index,0,key);
result=this._items[key];
return result;
}
/**
* 讀取值信息眯分。
* @param key 鍵名
*/
public getValue(key:string|number):any{
return this._items[key];
}
/**
* 根據(jù)索引ID,返回key
*/
public getKey(i:number):string{
return this._keys[i];
}
/**
* 刪除字典中第一個(gè)元素柒桑,并返回該元素弊决。
* @return 返回該鍵值所關(guān)聯(lián)元素
*/
public shift():any
{
var result:Object=null;
if(this.containsKey(this._keys[0]))
{
result=this._items[this._keys[0]];
this.remove(this._keys[0]);
}
return result;
}
/**
* 刪除數(shù)組中最后一個(gè)元素,并返回該鍵值對象魁淳。
* @return
*
*/
public pop():any{
var result:any=null;
var len=this._keys.length-1;
if(this.containsKey(this._keys[len]))
{
result=this._items[this._keys[len]];
this.remove(this._keys[len]);
}
return result;
}
/**
* 按指定鍵刪除鍵值
* @param key 鍵名
*/
public remove(key:string|number):any {
var temp:any;
if (this.containsKey(key)) {
temp=this._items[key];
delete this._items[key];
var len=this._keys.length
for(var i=0;i<len;i++){
if(this._keys[i]==key){
this._keys.splice(i,1);
break;
}
}
}
return temp;
}
public removeAt(i:number):void
{
if(this._keys[i]!=null){
this.remove(this._keys[i]);
}
}
/**
* 刪除全部
*/
public allRemove():void{
var len=this._keys.length
for (var i=0; i<len; i++)
{
delete this._items[this._keys[0]];
this._keys.splice(0, 1);
}
}
/**
* 判斷鍵是否存在飘诗,如果存在,返回true
* @param key 鍵名稱
* @return Boolean
*
*/
public containsKey(key:string|number):boolean {
return this._items[key]!=null;
}
/**
* 判斷值是否存在界逛,如果存在昆稿,返回true
* @param key 值 Object
* @return Boolean
*
*/
public containsValue(value:any):boolean {
var result:boolean=false;
var len:number=this.length;
if (len>0) {
for (var i:number=0; i<len; i++) {
if (this._items[this._keys[i]]==value){
result = true;
break;
}
}
}
return result;
}
/**
* 鍵值長度
* @return
*
*/
public get length():number{
return this._keys.length;
}
對 鍵名 也新建了個(gè)數(shù)組進(jìn)行保存。