1. 程式人生 > >js 中Map使用

js 中Map使用

遍歷 鍵值 是否 move text each val fun pty

function Map() {

/** 存放鍵的數組(遍歷用到) */

this.keys = new Array();

/** 存放數據 */

this.data = new Object();

/**

* 放入一個鍵值對

* @param {String} key

* @param {Object} value

*/

this.put = function(key, value) {

if(this.data[key] == null){

this.keys.push(key);

}

this.data[key] = value;

};

/**

* 獲取某鍵對應的值

* @param {String} key

* @return {Object} value

*/

this.get = function(key) {

return this.data[key];

};

/**

* 刪除一個鍵值對

* @param {String} key

*/

this.remove = function(key) {

this.keys.remove(key);

this.data[key] = null;

};

/**

* 遍歷Map,執行處理函數

*

* @param {Function} 回調函數 function(key,value,index){..}

*/

this.each = function(fn){

if(typeof fn != 'function'){

return;

}

var len = this.keys.length;

for(var i=0;i<len;i++){

var k = this.keys[i];

fn(k,this.data[k],i);

}

};

/**

* 獲取鍵值數組(類似Java的entrySet())

* @return 鍵值對象{key,value}的數組

*/

this.entrys = function() {

var len = this.keys.length;

var entrys = new Array(len);

for (var i = 0; i < len; i++) {

entrys[i] = {

key : this.keys[i],

value : this.data[i]

};

}

return entrys;

};

/**

* 判斷Map是否為空

*/

this.isEmpty = function() {

return this.keys.length == 0;

};

/**

* 獲取鍵值對數量

*/

this.size = function(){

return this.keys.length;

};

/**

* 重寫toString

*/

this.toString = function(){

var s = "{";

for(var i=0;i<this.keys.length;i++,s+=','){

var k = this.keys[i];

s += k+"="+this.data[k];

}

s+="}";

return s;

};

}

這裏舉例簡單的 map.each()方法 求和計算

var map = new Map();

map.put("a",5);

map.put("b",10);

map.put("c",15);

map.put("d",20);

var sum = 0;

if(map.size()>0){

map.each(function(e_key, e_value, e_i){

sum = sum + e_value;

});

}



js 中Map使用