一個(gè)簡(jiǎn)單的JavaScript Map實(shí)例(分享)
用js寫了一個(gè)Map,帶遍歷功能,請(qǐng)大家點(diǎn)評(píng)下啦。
//map.js
Array.prototype.remove = function(s) { for (var i = 0; i < this.length; i++) { if (s == this[i]) this.splice(i, 1); } } /** * Simple Map * * * var m = new Map(); * m.put('key','value'); * ... * var s = ""; * m.each(function(key,value,index){ * s += index+":"+ key+"="+value+"\n"; * }); * alert(s); * * @author dewitt * @date 2008-05-24 */ function Map() { /** 存放鍵的數(shù)組(遍歷用到) */ this.keys = new Array(); /** 存放數(shù)據(jù) */ this.data = new Object(); /** * 放入一個(gè)鍵值對(duì) * @param {String} key * @param {Object} value */ this.put = function(key, value) { if(this.data[key] == null){ this.keys.push(key); } this.data[key] = value; }; /** * 獲取某鍵對(duì)應(yīng)的值 * @param {String} key * @return {Object} value */ this.get = function(key) { return this.data[key]; }; /** * 刪除一個(gè)鍵值對(duì) * @param {String} key */ this.remove = function(key) { this.keys.remove(key); this.data[key] = null; }; /** * 遍歷Map,執(zhí)行處理函數(shù) * * @param {Function} 回調(diào)函數(shù) 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); } }; /** * 獲取鍵值數(shù)組(類似Java的entrySet()) * @return 鍵值對(duì)象{key,value}的數(shù)組 */ 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; }; /** * 獲取鍵值對(duì)數(shù)量 */ 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; }; } function testMap(){ var m = new Map(); m.put('key1','Comtop'); m.put('key2','南方電網(wǎng)'); m.put('key3','景新花園'); alert("init:"+m); m.put('key1','康拓普'); alert("set key1:"+m); m.remove("key2"); alert("remove key2: "+m); var s =""; m.each(function(key,value,index){ s += index+":"+ key+"="+value+"\n"; }); alert(s); } //testMap.htm ? <html> <head> <title>Test Map</title> <script language="javascript" src="map.js"> </script> </head> <body> <input type="button" value="test" onclick="testMap()"> </body> </html>
以上這篇一個(gè)簡(jiǎn)單的JavaScript Map實(shí)例(分享)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
每個(gè) JavaScript 工程師都應(yīng)懂的33個(gè)概念
這個(gè)項(xiàng)目是為了幫助開發(fā)者掌握 JavaScript 概念而創(chuàng)立的。它不是必備,但在未來學(xué)習(xí)( JavaScript )中,可以作為一篇指南,需要的朋友可以參考下2018-10-10簡(jiǎn)述JS中forEach()、map()、every()、some()和filter()的用法
JS中常常需要對(duì)數(shù)組進(jìn)行遍歷、迭代操作,而我們常用的就是for語句對(duì)數(shù)組進(jìn)行迭代,下面這篇文章主要給大家介紹了關(guān)于JS中forEach()、map()、every()、some()和filter()的用法,需要的朋友可以參考下2022-05-05JS/jquery實(shí)現(xiàn)一個(gè)網(wǎng)頁內(nèi)同時(shí)調(diào)用多個(gè)倒計(jì)時(shí)的方法
這篇文章主要介紹了JS/jquery實(shí)現(xiàn)一個(gè)網(wǎng)頁內(nèi)同時(shí)調(diào)用多個(gè)倒計(jì)時(shí)的方法,涉及js與jQuery基于定時(shí)器的時(shí)間相關(guān)操作技巧,需要的朋友可以參考下2017-04-04javasript實(shí)現(xiàn)密碼的隱藏與顯示
用戶輸入密碼時(shí)都是顯示的星號(hào)了,那么我們希望查看明文要怎么查看呢,下面我們只要使用一段簡(jiǎn)單的js就可以實(shí)現(xiàn)查看密碼框的明文了,有需要的小伙伴可以來參考下。2015-05-05javascript中createElement的兩種創(chuàng)建方式
這篇文章主要介紹了javascript中createElement的兩種創(chuàng)建方式,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-05-05