萬盛學電腦網

 萬盛學電腦網 >> 腳本專題 >> javascript >> javascript實現簡單的Map示例介紹

javascript實現簡單的Map示例介紹

 本文為大家介紹下使用javascript實現簡單的Map,可以對map進行獲取、判斷、刪除、增加等等,感興趣的朋友可以了解下

 代碼如下: /*  * MAP對象,實現MAP功能  *  * 接口:  * size() 獲取MAP元素個數  * isEmpty() 判斷MAP是否為空  * clear() 刪除MAP所有元素  * put(key, value) 向MAP中增加元素(key, value)  * remove(key) 刪除指定KEY的元素,成功返回True,失敗返回False  * get(key) 獲取指定KEY的元素值VALUE,失敗返回NULL  * element(index) 獲取指定索引的元素(使用element.key,element.value獲取KEY和VALUE),失敗返回NULL  * containsKey(key) 判斷MAP中是否含有指定KEY的元素  * containsValue(value) 判斷MAP中是否含有指定VALUE的元素  * values() 獲取MAP中所有VALUE的數組(ARRAY)  * keys() 獲取MAP中所有KEY的數組(ARRAY)  *  * 例子:  * var map = new Map();  *  * map.put("key", "value");  * var val = map.get("key")  * ……  *  */  function Map() {  this.elements = new Array();    //獲取MAP元素個數  this.size = function() {  return this.elements.length;  };    //判斷MAP是否為空  this.isEmpty = function() {  return (this.elements.length < 1);  };    //刪除MAP所有元素  this.clear = function() {  this.elements = new Array();  };    //向MAP中增加元素(key, value)  this.put = function(_key, _value) {  this.elements.push( {  key : _key,  value : _value  });  };    //刪除指定KEY的元素,成功返回True,失敗返回False  this.removeByKey = function(_key) {  var bln = false;  try {  for (i = 0; i < this.elements.length; i++) {  if (this.elements[i].key == _key) {  this.elements.splice(i, 1);  return true;  }  }  } catch (e) {  bln = false;  }  return bln;  };    //刪除指定VALUE的元素,成功返回True,失敗返回False  this.removeByValue = function(_value) {//removeByValueAndKey  var bln = false;  try {  for (i = 0; i < this.elements.length; i++) {  if (this.elements[i].value == _value) {  this.elements.splice(i, 1);  return true;  }  }  } catch (e) {  bln = false;  }  return bln;  };    //刪除指定VALUE的元素,成功返回True,失敗返回False  this.removeByValueAndKey = function(_key,_value) {  var bln = false;  try {  for (i = 0; i < this.elements.length; i++) {  if (this.elements[i].value == _value && this.elements[i].key == _key) {  this.elements.splice(i, 1);  return true;  }  }  } catch (e) {  bln = false;  }  return bln;  };    //獲取指定KEY的元素值VALUE,失敗返回NULL  this.get = function(_key) {  try {  for (i = 0; i < this.elements.length; i++) {  if (this.elements[i].key == _key) {  return this.elements[i].value;  }  }  } catch (e) {  return false;  }  return false;  };    //獲取指定索引的元素(使用element.key,element.value獲取KEY和VALUE),失敗返回NULL  this.element = function(_index) {  if (_index < 0 || _index >= this.elements.length) {  return null;  }  return this.elements[_index];  };    //判斷MAP中是否含有指定KEY的元素  this.containsKey = function(_key) {  var bln = false;  try {  for (i = 0; i < this.elements.length; i++) {  if (this.elements[i].key == _key) {  bln = true;  }  }  } catch (e) {  bln = false;  }  return bln;  };    //判斷MAP中是否含有指定VALUE的元素  this.containsValue = function(_value) {  var bln = false;  try {  for (i = 0; i < this.elements.length; i++) {  if (this.elements[i].value == _value) {  bln = true;  }  }  } catch (e) {  bln = false;  }  return bln;  };    //判斷MAP中是否含有指定VALUE的元素  this.containsObj = function(_key,_value) {  var bln = false;  try {  for (i = 0; i < this.elements.length; i++) {  if (this.elements[i].value == _value && this.elements[i].key == _key) {  bln = true;  }  }  } catch (e) {  bln = false;  }  return bln;  };    //獲取MAP中所有VALUE的數組(ARRAY)  this.values = function() {  var arr = new Array();  for (i = 0; i < this.elements.length; i++) {  arr.push(this.elements[i].value);  }  return arr;  };    //獲取MAP中所有VALUE的數組(ARRAY)  this.valuesByKey = function(_key) {  var arr = new Array();  for (i = 0; i < this.elements.length; i++) {  if (this.elements[i].key == _key) {  arr.push(this.elements[i].value);  }  }  return arr;  };    //獲取MAP中所有KEY的數組(ARRAY)  this.keys = function() {  var arr = new Array();  for (i = 0; i < this.elements.length; i++) {  arr.push(this.elements[i].key);  }  return arr;  };    //獲取key通過value  this.keysByValue = function(_value) {  var arr = new Array();  for (i = 0; i < this.elements.length; i++) {  if(_value == this.elements[i].value){  arr.push(this.elements[i].key);  }  }  return arr;  };    //獲取MAP中所有KEY的數組(ARRAY)  this.keysRemoveDuplicate = function() {  var arr = new Array();  for (i = 0; i < this.elements.length; i++) {  var flag = true;  for(var j=0;j<arr.length;j++){  if(arr[j] == this.elements[i].key){  flag = false;  break;  }  }  if(flag){  arr.push(this.elements[i].key);  }  }  return arr;  };  }   
copyright © 萬盛學電腦網 all rights reserved