javascript實現(xiàn)簡單的Map示例介紹
更新時間:2013年12月23日 15:31:28 作者:
本文為大家介紹下使用javascript實現(xiàn)簡單的Map,可以對map進行獲取、判斷、刪除、增加等等,感興趣的朋友可以了解下
復制代碼 代碼如下:
/*
* MAP對象,實現(xiàn)MAP功能
*
* 接口:
* size() 獲取MAP元素個數(shù)
* 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的數(shù)組(ARRAY)
* keys() 獲取MAP中所有KEY的數(shù)組(ARRAY)
*
* 例子:
* var map = new Map();
*
* map.put("key", "value");
* var val = map.get("key")
* ……
*
*/
function Map() {
this.elements = new Array();
//獲取MAP元素個數(shù)
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的數(shù)組(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的數(shù)組(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的數(shù)組(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的數(shù)組(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;
};
}
相關(guān)文章
微信小程序?qū)崿F(xiàn)發(fā)動態(tài)功能的示例代碼
最近做了一個校園拍賣小程序,想在里面添加一個類似校園圈功能,現(xiàn)在來一步一步實現(xiàn),對微信小程序?qū)崿F(xiàn)發(fā)動態(tài)功能感興趣的朋友一起看看吧2022-08-08javascript實現(xiàn)div的顯示和隱藏的小例子
這篇文章介紹了在JS中實現(xiàn)DIV顯示和隱藏的實例,需要的朋友可以參考一下2013-06-06javascript自定義startWith()和endWith()的兩種方法
js中自定義startWith()和endWith()方法有兩種,在本文將為大家詳細介紹下,感興趣的朋友不要錯過2013-11-11JavaScript使用arcgis實現(xiàn)截圖截屏功能
這篇文章主要為大家詳細介紹了JavaScript如何使用arcgis實現(xiàn)截圖截屏功能,類似于qq截圖,文中的示例代碼講解詳細,需要的可以參考一下2024-01-01