您的位置:首页 > Web前端 > JavaScript

在js写一个Map

2014-09-14 23:00 253 查看
是复制
的文章,作者很厉害啊!我要多多学习,加油!!!
http://www.cnblogs.com/zfc2201/archive/2012/07/16/2594389.html,原帖位置
众所周之,js是没有Map类的,要想用还得自己封装一个
(function(win) {var Map = function() {this.count = 0;this.entrySet = {};};var proto = Map.prototype;proto.size = function() {return this.count;};proto.isEmpty = function() {return this.count === 0;};proto.containsKey = function(key) {if (this.isEmpty()) {return false;}for ( var prop in this.entrySet) {if (prop === key) {return true;}}return false;};proto.containsValue = function(value) {if (this.isEmpty()) {return false;}for ( var key in this.entrySet) {if (this.entrySet[key] === value) {return true;}}return false;};proto.get = function(key) {if (this.isEmpty()) {return null;}if (this.containsKey(key)) {return this.entrySet[key];}return null;};proto.put = function(key, value) {this.entrySet[key] = value;this.count++;};proto.remove = function(key) {if (this.containsKey(key)) {delete this.entrySet[key];this.count--;}};proto.putAll = function(map) {     if(!map instanceof Map){        return;     }for ( var key in map.entrySet) {this.put(key, map.entrySet[key]);}};proto.clear = function() {for ( var key in this.entrySet) {this.remove(key);}};proto.values = function() {var result = [];for ( var key in this.entrySet) {result.push(this.entrySet[key]);}return result;};proto.keySet = function() {var result = [];for ( var key in this.entrySet) {result.push(key);}return result;};proto.toString = function() {var result = [];for ( var key in this.entrySet) {result.push(key + ":" + this.entrySet[key]);}return "{" + result.join() + "}";};proto.valueOf = function() {return this.toString();};win.Map = Map;})(window);
测试:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><script type="text/javascript" src="Map.js"></script><script type="text/javascript">window.onload = function(){    var map = new Map();    map.put("name", "jack");    map.put("age", "28");    map.put("gender", "male");        println(map.get("name"));            println(map.isEmpty());        println(map.get("name"));        println(map.size());        println(map.keySet());        println(map.values());        println(map.count);        println(map);        println("-----------------------------------------");        var map2 = new Map();    map2.putAll(map);        println(map2);        map2.remove("gender");        println(map2);    println(map2.size());        println(map2.containsKey("name"));    println(map2.containsValue("jack"));        map2.clear();        println(map2);    println(map2.size());        println(map2.containsKey("name"));    println(map2.containsValue("jack"));}</script></head><body></body></html>
结果:
jackfalsejack[name,age,gender][jack,28,male]{name:jack,age:28,gender:male}-----------------------------------------{name:jack,age:28,gender:male}{name:jack,age:28}truetrue{}falsefalse
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: