1. 程式人生 > >【javascript】如何在Javascript中創造map物件?

【javascript】如何在Javascript中創造map物件?

在講解這篇文章之前,我們都知道Map是一個存放鍵值對形式的集合,而Javascript中卻沒有此型別的函式API。那麼能不能利用Array來儲存有鍵值對形式的物件呢?下面將展示在JS中如何建立MAP物件。

/**
 * 建立map類,用於儲存鍵-值,一一對應起來
 */
function Map(){
	
	/**
	 * 定義map類中的元素結構,並初始化 
	 */
	var struct = function(key,value){
		this.key = key;
		this.value = value;
	}
	
	/**
	 * 定義put方法,新增元素
	 */
	var put = function(key,value){
		for(var i = 0; i < this.arr.length; i++){ //遍歷map中的所有元素
			if(this.arr[i].key === key){ // 此map不能新增已經存在的元素
				this.arr[i].value == value;
				return false;
			}
		}
		this.arr[this.arr.length] = new struct(key,value);
	}
	
	/**
	 * 定義get方法,根據key獲取相應的value
	 */
	var get = function(key){
		for(var i = 0; i < this.arr.length; i++){
			if(this.arr[i].key === key){
				return this.arr[i].value;
			}
		}
		return null;
	}
	
	/**
	 * 定義remove方法,用於刪除指定key的元素
	 */
	var remove = function(key){
		var lastProp;
		for(var i = 0; i < this.arr.length; i++){
			lastProp = this.arr.pop(); //移除最後一個元素並返回該元素值
			if(lastProp === key){
				continue;
			}
			this.arr.unshift(lastProp); //將一個或多個新元素新增到陣列開始,陣列中的元素自動後移,返回陣列新長度
		}
	}
	
	var size = function(){
		return this.arr.length;
	}
	
	this.arr = [];
	this.put = put;
	this.get = get;
	this.remove = remove;
	this.size = size;
}
當然,Java中的Map物件是無序的鍵值對形式的集合,所以此物件並非真正意義上的Map物件,我們構造此物件,就是做資料載體用.合理的運用一些Javascript中的原型函式,就能構想我們想要實現的功能方法.